preg - 带 [] 和不带 [] 的搜索模式之间的区别
preg - Difference between Search Patterns with [] and without
我似乎无法理解 PHP 中 preg 正则表达式模式的一些非常基本的东西。
这些正则表达式模式有什么区别:
\b([A-Z...]...)
[\b]{1}([A-Z...]...)
Pattern 应该以单词边界开头,但为什么我把它放在 []{1}
中时结果不同??
第一个像我预期的那样工作,但第二个不是。问题是,我想在 []
中添加更多内容,以便模式可以以单词边界或小字符 [a-z]
开头。
谢谢!
示例文本:
Race1529/05/201512:45K4 Senior Men 1000m
LaneName(s)NFBib(s)TimeRank250m500m750m
152
Martin SCHUBERT / Lukas REUSCHENBACH155
11
153
151Kostja STROINSKI / Kai SPENNER
03:07.740
GER
8
我想找到赛车手的名字。有时他们在开头有分词符 (\b
),有时则没有。 (但我需要断词。)
$pattern = '#\b(['.$GB.$KB.'\s\-]{2,40})\s(['.$GB.'\'\-\s]{2,40})[0-9]{0,5}#';
($GB
是全大写字母的变量,$KB
是小写字母的变量)
preg_match_all
为我提供名称开头有断字的所有赛车手。 (在这个例子中是舒伯特、罗申巴赫、斯宾纳)但当然不是斯特罗因斯基。所以,我试试这个:
$pattern = '#[\b0-9]+(['.$GB.$KB.'\s\-]{2,40})\s(['.$GB.'\'\-\s]{2,40})[0-9]{0,5}#';
无效。即使我删除 0-9 并只将 [\b]{1} 放在开头,它也找不到任何匹配项。
我看不出 \b
和 [\b]{1}
之间的区别。这似乎是一个非常基本的误解。
[\b]
是 character class that only matches a backspace char (\u0008
).
note that "\b"
has a different meaning, namely the backspace character, inside a character class
此外,.{1}
= .
,{1}
limiting quantifier 总是多余的,只有当你的模式是从变量动态构建时才有意义。
我似乎无法理解 PHP 中 preg 正则表达式模式的一些非常基本的东西。
这些正则表达式模式有什么区别:
\b([A-Z...]...)
[\b]{1}([A-Z...]...)
Pattern 应该以单词边界开头,但为什么我把它放在 []{1}
中时结果不同??
第一个像我预期的那样工作,但第二个不是。问题是,我想在 []
中添加更多内容,以便模式可以以单词边界或小字符 [a-z]
开头。
谢谢!
示例文本:
Race1529/05/201512:45K4 Senior Men 1000m
LaneName(s)NFBib(s)TimeRank250m500m750m
152
Martin SCHUBERT / Lukas REUSCHENBACH155
11
153
151Kostja STROINSKI / Kai SPENNER
03:07.740
GER
8
我想找到赛车手的名字。有时他们在开头有分词符 (\b
),有时则没有。 (但我需要断词。)
$pattern = '#\b(['.$GB.$KB.'\s\-]{2,40})\s(['.$GB.'\'\-\s]{2,40})[0-9]{0,5}#';
($GB
是全大写字母的变量,$KB
是小写字母的变量)
preg_match_all
为我提供名称开头有断字的所有赛车手。 (在这个例子中是舒伯特、罗申巴赫、斯宾纳)但当然不是斯特罗因斯基。所以,我试试这个:
$pattern = '#[\b0-9]+(['.$GB.$KB.'\s\-]{2,40})\s(['.$GB.'\'\-\s]{2,40})[0-9]{0,5}#';
无效。即使我删除 0-9 并只将 [\b]{1} 放在开头,它也找不到任何匹配项。
我看不出 \b
和 [\b]{1}
之间的区别。这似乎是一个非常基本的误解。
[\b]
是 character class that only matches a backspace char (\u0008
).
note that
"\b"
has a different meaning, namely the backspace character, inside a character class
此外,.{1}
= .
,{1}
limiting quantifier 总是多余的,只有当你的模式是从变量动态构建时才有意义。