我在文本文件中有以下几行(简单示例,我需要工作的实际文本文件是7,000行):
我正在尝试使用正则表达式来搜索包含单词“Dad”和“kitchen”的任何行。它们不必彼此相邻,而只是在某个地方。
在上面的例子中,只能找到第二行。
我试过了:
[kitchen] dad
但这与第2行和第3行匹配,大概是因为[kitchen]说找到包含任何这些字符的行,而不是整个单词,以及包含“dad”的单词。
我也尝试过:
[\bkitchen\b] dad
但这也不起作用。
抱歉发布这个问题,我似乎有可能被Stackoverflow阻止再问问题,因为我的问题没有得到好评,但我不知道为什么,我试着提出明确的问题......
任何建议都非常感谢。
由于
答案 0 :(得分:1)
您可以尝试以下使用外观的正则表达式。并且不要忘记启用i
修饰符来进行不区分大小写的匹配。
^(?=.*?\bkitchen\b)(?=.*?\bdad\b)(?!\bkitchen\sdad\b|\bdad\skitchen\b).*
答案 1 :(得分:0)
以下正则表达式将按照您的要求执行,但BlackBear是正确的,大多数编程语言提供了一种更简单的方法来确定一行文本是否包含子字符串。
^.*(?:dad.*kitchen|kitchen.*dad).*$
注意:表达式将始终与整行匹配。
确保在匹配时使用i
标志以确保不区分大小写的匹配
另外,您可以使用更改表达式:
^(?i).*(?:dad.*kitchen|kitchen.*dad).*$
答案 2 :(得分:0)
使用lookahead
,此正则表达式应该可以正常工作。
(?:(?=\bdad\b).*(?=\bkitchen\b).*)|(?:(?=\bkitchen\b).*(?=\bdad\b).*)
答案 3 :(得分:0)
dad 后面跟着 kitchen :
dad.*kitchen
或 kitchen 后面是 dad :
kitchen.*dad
把两者放在一起:
(dad.*kitchen|kitchen.*dad)
另外,请记住区分大小写。