我正在编写一个正则表达式,需要满足以下标准。
(name="myName".*house="myHouse"|house="myHouse".*name="myName")
名字或房子都可以先出现。我的正则表达式应该匹配。
实际上,在编写重复代码后,我的真实代码会更大。
有没有办法像上面那样使用没有重复的正则表达式?
答案 0 :(得分:1)
没有|的唯一可行方法管道运营商要做两个单独的正则表达式搜索。所以答案是否定的,没有别的办法。
此外,如果这是您正在搜索的XML或HTML,强烈建议您使用诸如Beautiful Soup之类的解析器而不是正则表达式。
答案 1 :(得分:0)
您可以使用正向前瞻断言。这有点像jejune,但是如果你想保持简单,它应该有用。你想要做的是确认:
I am looking at .*house
AND
I am looking at .*name
不考虑两个.*
部分的长度。
因此,由于超前表达式是零宽度(也就是说,它们匹配而没有实际消耗任何字符 - 它们只是“向前看”),您可以根据需要将它们粘贴在一起。< / p>
请注意:执行此操作可能会变得非常昂贵且性能明显。您必须扫描,然后重新扫描您匹配的每个额外术语。如果你匹配的字符串很长,这会让你失望很多。
示例正则表达式:
(?=.*name="myName")(?=.*house="myHouse")