我有以下字符串:
来自加州的约翰·纳什姓名
姓名约翰·纳什
我想要一个能够为两个字符串提取“John Nash”的正则表达式。
这是我尝试过的
"NAME(.*)(?:FROM)"
"NAME(.*)(?:FROM)?"
"NAME(.*?)(?:FROM)?"
但这些都不适用于两个字符串。
最佳答案
您可以在 FROM
和 anchor $
之间使用逻辑或:
NAME(.*)(?:FROM|$)
查看演示 https://regex101.com/r/rR3gA0/1
在这种情况下,在名称之后它将匹配 FROM
或字符串的末尾。但是在您的正则表达式中,因为您将 FROM
设置为可选,在第一种情况下它将匹配名称后的其余字符串。
如果你想使用更通用的正则表达式,你最好根据你的名字可能形状创建你的正则表达式,例如,如果你确定你的名字是由 2 个单词创建的,你可以使用以下正则表达式:
NAME\s(\w+\s\w+)
关于python - 将正则表达式与可选的先行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33090977/