Распакуйте строки в PHP

1

Я новичок в регулярных выражениях.

Я получил строки вроде:

DFE2001 NE Not 1
CAT11004 TP
FFE2001 NE Not 3
AVI2002 NE
LAB4000 SU
BA-PRI008 Not 1
FDD2001 NE Not 2

Мне нужно извлечь несколько строк, которые содержат Not x, исключая Not x, это означает, что выходные строки должны быть такими:

  DFE2001 NE
  CAT11004 TP
  FFE2001 NE
  AVI2002 NE
  LAB4000 SU
  BA-PRI008
  FDD2001 NE

Может ли кто-нибудь сказать мне регулярное выражение и функцию о том, как использовать для этого?

Теги:
preg-match
preg-split

5 ответов

2
Лучший ответ

Попробуй это:

preg_replace('/\s*Not \d\s*$/', '', $string)

Он удалит "Not x" с окружающими пространствами из конца строки (x означает любой числовой символ).

  • 0
    Спасибо @TareqMahmood: однострочный код. работает как шарм. благодарю вас. Спасибо всем и ТАК.
  • 0
    Это не удаление пробела перед не 1. Можете ли вы сказать мне, как удалить 1 пробел перед не 1
Показать ещё 6 комментариев
0

Примечание: - Это всего лишь образец кода, который вы должны сделать, чтобы ваша собственная логика вычисляла для всей заданной строки.

$re = "/.+?(?= Not)/";      // reg to check string having Not
$str = "DFE2001 NE Not 1"; 
preg_match($re, $str, $matches);
echo '<pre>';print_r($matches);  // take out string before Not
0
^(?:(?!\bNot\b).)*(?=\s+|$)

Вы можете попробовать это. Смотрите демоверсию.

https://regex101.com/r/hE4jH0/44

import re
p = re.compile(ur'^(?:(?!\bNot\b).)*(?=\s+|$)', re.MULTILINE)
test_str = u"DFE2001 NE Not 1\nCAT11004 TP\nFFE2001 NE Not 3\nAVI2002 NE\nLAB4000 SU\nBA-PRI008 Not 1\nFDD2001 NE Not 2"

re.findall(p, test_str)
0

Спасибо за ваши ребята, я смог сделать это с помощью функций strpos и substr, таких как:

$mystring = 'DFE2001 NE Not 1';
// $mystring = 'LAB4000 SU';
$findme   = ' Not';
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
        $mystring = $mystring;
        echo '<br/>mystring::::' . $mystring;
} else {
    echo "The string '$findme' was found in the string '$mystring'";
    echo " and exists at position $pos";
        $mystring = substr($mystring, 0, $pos);
        echo '<br/>mystring::::' . $mystring;
    }
0

Пока число ' Not ' всегда равно одной цифре, вы можете сделать это, используя только substr.

$input = array('DFE2001 NE Not 1',
    'CAT11004 TP',
    'FFE2001 NE Not 3',
    'AVI2002 NE',
    'LAB4000 SU',
    'BA-PRI008 Not 1',
    'FDD2001 NE Not 2'
);

array_walk($input, function(&$x) {
    if (substr($x, -6, -1) == ' Not ') $x = substr($x, 0, -6);
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню