我的值中有很多行,我需要在换行符,返回和开始或结束之间运行preg_match。
$text = "
ENG CHG NOTE
2A
LTR CHK
AH 2000
YE
NOTE 2
";
例如:
preg_match("/((?P<value>\\d+(.\\d+)*?)\s?(?P<unit>YE))/"
我想确保preg_match仅在上面的示例中查找数字和YE。在该示例中,属于AH的示例2000将为YE显示错误值。如何围绕我当前的正则表达式包含\ r \ n和开头或结尾?
答案 0 :(得分:1)
在此示例中,属于
AH
的示例2000将显示YE
的错误值。如何围绕我当前的正则表达式包含\r\n
以及开始或结束?
在您拥有的示例中,数字紧跟在YE
后跟换行符后。由于\s
也匹配换行符号,因此您需要调整模式以仅匹配水平空格。
您可以在此处使用两种模式:\h
或[^\S\r\n]
。
'~(?P<value>\d+(?:.\d+)*?)\h?(?P<unit>YE)~'
^^
$re = '~(?P<value>\d+(?:.\d+)*?)\h?(?P<unit>YE)~';
$str = "ENG CHG NOTE\n2A\nLTR CHK\nAH 2000\nYE\nNOTE 2\n3444 YE\n";
preg_match_all($re, $str, $matches);
print_r($matches);