我想找到与我的正则表达式匹配的序列,如果它们位于由空格包围的字符串的中间,在结尾或开头,或者是字符串中唯一的东西.
示例:
假设序列'qwe45rty'是我们正在寻找的.我希望能够对所有这些字符串产生积极影响:
'qwe45rty' 'qwe45rty blabla' 'smth qwe45rty blabla' 'smth qwe45rty' ' qwe45rty '
但这些都不是:
'aaqwe45rty' 'qwe45rtybb' 'aaqwe45rtybb'
我想出的最好的是像这样:
if ( ($a =~ /\s+$re\s+/) or
($a =~ /^$re\s+/) or
($a =~ /\s+$re$/) or
($a =~ /^$re$/) )
{
# do stuff
}
Run Code Online (Sandbox Code Playgroud)
这不是最好的方式:)
有什么建议?
And*_*eKR 19
你可以做或正则表达式中:
/(^|\s+)qwe45rty(\s+|$)/
Run Code Online (Sandbox Code Playgroud)
尝试从不同的方向解决问题.说一些东西可以匹配空格,或者没有什么可以说它不能匹配非空格字符:
(?<!\S)qwe45rty(?!\S)
Run Code Online (Sandbox Code Playgroud)
只是视角的一点点转变,正则表达式实际上写出了自己.
| 归档时间: |
|
| 查看次数: |
13100 次 |
| 最近记录: |