python - 以括号开头和结尾的正则表达式

标签 python regex

这是我尝试使用 re 模块在 Python 中创建的模式对象。我想要的是将采用字符串“(\exists x)(Px*Qx)”并仅找到“Px*Qx”部分的东西。我想我会尝试使用前瞻和后视断言。我不确定是我用错了还是 ( 字符有问题。

p = re.compile(r'?<=[(]\w+?=[)]')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/re.py", line 190, in compile
    return _compile(pattern, flags)
  File "/usr/lib/python2.7/re.py", line 244, in _compile
    raise error, v # invalid expression
sre_constants.error: nothing to repeat

最佳答案

问题

  1. 您需要将 token 放入组中以应用后视(在周围添加括号):(?<=[(]\w+(?=[)]))

  2. Python 不支持 lookbehind 中的变量重复。所以,你不能写 \w+那里。

  3. 只有后视的正则表达式什么都不匹配!向后看意味着“尝试匹配这个东西,然后保持在相同的起始位置以匹配正则表达式的以下部分。”但是,在您的情况下,没有后续部分。所以,没有任何匹配项。

解决方案

如果你想获取最后一个括号内的文本:

^.*\((.*?)\)$

如果您想跳过第一个括号并获得删除括号的剩余部分:

^\(.*?\)\((.*)\)$

请更具体地定义您想要的内容,以便我可以帮助您编写正确的正则表达式。

关于python - 以括号开头和结尾的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12207991/

相关文章:

javascript - 16 位数字和正斜杠的正则表达式?

python - 混合类型的numpy数据切片

Python 3正则表达式来分割项目列表?

javascript - 查找一个数组中比另一个数组中的元素大的元素

C:使用 RegEx 将十六进制字符串分离为字符数组

Python 正则表达式只匹配一次

python - 如何从 Python 字典中删除非 ASCII 字符并替换为空格

python 段错误(核心转储)

python - 获取 Python 函数的调用字符串,如在命令行中键入的那样

php - 正则表达式问题(针对 preg_split)