用于忽略字符串中括号的正则表达式

RegEx for ignoring parentheses in a string

这些是这样的字符串:

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.']

我的问题是如何将 . 的括号内容作为列表元素链接起来?

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

我建议使用

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

参见regex demo and a Regulex graph

详情

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

This RegEx 可能 return 您想要的输出,您可以简单地在 [] 中列出所有您想要的字符。如果愿意,您可以使用捕获组,只需使用 $1 即可简单地调用它。您可以在 [] 中添加您可能 wish/have 的任何其他字符,如果这些字符可能是元字符,您可以使用 \ 用于逃跑。

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

您可以删除捕获组,它可能仍然有效:

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