晚安,我有表情
$string='ГОСТ Р ИСО /МЭК 7498-1-99. Информационная технология. Взаимосвязь
открытых систем. Базовая эталонная модель. Часть 1. Базовая модель (принят и
введен в действие Постановлением Госстандарта России от 18.03.1999 № 78)';
preg_match_all("~ГОСТ\s*Р\s*\w+(\W|\W+)\w+\W\d+\W\d+\W\d+~iu",$string,$matches);
var_dump($matches);
我得到回应:
array(2) { [0]=> array(1) { [0]=> string(36) "ГОСТ Р ИСО /МЭК 7498-1-99" } [1]=> array(1) { [0]=> string(2) " /" } }
帮助我了解数组“/”的第二个元素来自哪里。或者告诉我如何让它找到子字符串ГОСТ Р ИСО /МЭК 7498-1-99
和ГОСТ Р ИСО/МЭК 7498-1-99
该模式
(\W|\W+)
是一个捕获子模式,其值在匹配时存储在单独的缓冲区中(因此存在于结果中),其含义如下:通常,要使子模式不可捕获,您可以在
?:
其后添加(
:(?:шаблон1|шаблон2)
。在这种情况下,alternation 和 subpattern 可以省略且仅
\W+
.请参阅正则表达式演示。
+
在每个之后添加(1 次或多次重复)可能是有意义的\W
:第二个元素取自这一行:
(\W|\W+)
,因为 它们在括号中。要忽略它们,我们只需要写?: