我对RegEx表达式很恐怖,我只是不经常使用它们来记住使用之间的语法.
我正在使用grepWin来搜索我的文件.我需要进行搜索,返回两次给定字符串的文件.
所以,例如,如果我在搜索单词"how",那么文件一不匹配:
你好
,今天好吗?
但文件二会:
你好
,今天好吗?我很好,你好吗?
任何人都知道如何制作一个与之匹配的RegEx?
VMy*_*kyt 16
这样的事情(取决于语言和你的具体任务)
\(how.*){2}\
Run Code Online (Sandbox Code Playgroud)
编辑: 根据@CodeJockey
\^(([^h]|h[^o]|ho[^w])*how([^h]|h[^o]|ho[^w])*){2,2}$\
Run Code Online (Sandbox Code Playgroud)
(它变得更复杂)@CodeJockey:感谢您的评论
我不知道grepWin支持什么,但是这就是我想出来让两件事完全匹配的原因.
/^((?!how).)*how((?!how).)*how((?!how).)*$/
Run Code Online (Sandbox Code Playgroud)
说明:
/^ # start of subject
((?!how).)* # any text that does not contain "how"
how # the word "how"
((?!how).)* # any text that does not contain "how"
how # the word "how"
((?!how).)* # any text that does not contain "how"
$/ # end of subject
Run Code Online (Sandbox Code Playgroud)
这可以确保您找到两个"如何",但"如何"和它们之间的文本不包含"如何".
当然,您可以用任何字符串替换表达式中的"how".
如果您只想通过两次编写搜索表达式来"简化",则可以使用反向引用:
/^(?:(?!how).)*(how)(?:(?!\1).)*\1(?:(?!\1).)*$/
Run Code Online (Sandbox Code Playgroud)
说明:
我添加?:了使负向前瞻的文本不捕获.然后我在常规周围添加括号how以使其成为捕获子模式(第一个也是唯一一个).
我不得不在第一个前瞻中再次包含"如何",因为它是一个负向前瞻(意味着任何捕获都不包含"如何")并且此时捕获的"如何"还没有被捕获.
| 归档时间: |
|
| 查看次数: |
33691 次 |
| 最近记录: |