我正在寻找同时匹配两个值的最佳方法.
我想获得一个真正的价值,如果这两个值是一个字符串,但我不知道他们会以什么顺序字符串中(例如,abcdef或bedfa在情况下,我想匹配a和b)
是否有更好的解决方案(特别是如果以后我需要更复杂的值来匹配),而不是:
$string =~ m/(a.*b)|(b.*a)/i
Run Code Online (Sandbox Code Playgroud)
Eug*_*ash 11
$string =~ /a/i && $string =~ /b/i;
Run Code Online (Sandbox Code Playgroud)
您可以使用正向前瞻:
$string =~ /^(?=.*a)(?=.*b).*$/i
Run Code Online (Sandbox Code Playgroud)
一般来说,如果你想检查字符串中是否存在foo和bar你可以做的:
$string =~ /^(?=.*foo)(?=.*bar).*$/i
Run Code Online (Sandbox Code Playgroud)
如果你想要foo和bar作为单独的单词而不是任何其他单词的子串,你可以将单词边界添加为:
$string =~ /^(?=.*\bfoo\b)(?=.*\bbar\b).*$/i
Run Code Online (Sandbox Code Playgroud)
以后如果你想添加检查存在,baz你可以这样做:
$string =~ /^(?=.*\bfoo\b)(?=.*\bbar\b)(?=.*\bbaz\b).*$/i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |