RegEx忽略字符串中的括号

时间:2019-04-29 16:37:41

标签: python regex regex-lookarounds regex-group regex-greedy

这些是这样的字符串:

strs = "Tierd-Branden This is (L.A.) 105  / New (Even L.A.A)"

尝试以下代码后,我没有得到预期的输出。

这是我的代码:

import re, itertools
strs = "Tierd-Branden This is (U.C.) 105  / New (Even L.A.A)"
print re.findall(r"[\w']+[\w\.]", strs)

我希望这样:

['Tierd', 'Branden', 'This', 'is', 'L.A.', '105', 'New', 'Even', 'L.A.A']

但是,我明白了:

['Tierd', 'Branden', 'This', 'is', 'L.', 'A.', '105', 'New', 'Even', 'L.', 'A.']

我的问题是如何用 链接为列表元素来保持括号的内容?

2 个答案:

答案 0 :(得分:1)

[\w']+[\w\.]模式匹配1个或多个单词或'字符,然后匹配一个单词或.字符。因此,它无法匹配单词或其中包含超过1个点的'字符的块。

我建议使用

r"\w[\w'.]*"

请参见regex demoRegulex graph

enter image description here

详细信息

  • \w-单词char
  • [\w'.]*-0个或更多单词,'.个字符。

答案 1 :(得分:0)

This RegEx可能会返回您想要的输出,您只需在 [] 中列出所有想要的字符即可。如果需要,您可以使用捕获组,仅使用 $ 1 对其进行调用即可。您可以在 [] 中添加希望的所有其他字符,如果这些字符可能是元字符,则可以使用 \ 进行转义。

([A-Za-z0-9\.]+)

enter image description here

您可以删除捕获组,但它仍可能起作用:

[A-Za-z0-9\.]+