python - 如何在python中匹配$(....)中的字符串

标签 python regex python-2.7

with open('templates/data.xml', 'r') as s:
    for line in s:
    line = line.rstrip() #removes trailing whitespace and '\n' chars

    if "\\$\\(" not in line:
        if ")" not in line:
                continue

    print(line)

    start = line.index("$(")    
    end = line.index(")")

    print(line[start+2:end])

我需要匹配类似于 $(hello) 的字符串。但现在这甚至匹配(你好)。

我真的是 python 新手。那么我在这里做错了什么?

最佳答案

使用以下正则表达式:

\$\(([^)]+)\)

它匹配 $,然后是 (,然后是最后一个 ) 之前的任何内容,并捕获括号之间的字符。

这里我们确实对 $() 进行了转义,因为当您使用接受正则表达式的函数时(例如 findall ),您不希望将 $ 视为特殊字符 $,而是将其视为文字“$”( ())也是如此。但是,请注意内括号没有被引用,因为您想要捕获外括号之间的文本。

请注意,当您不使用正则表达式时,您不需要转义特殊字符。

关于python - 如何在python中匹配$(....)中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31941538/

相关文章:

python - 静态方法语法困惑

javascript - 获取字符串中的最后一个数字 (JavaScript)

java - 没有前一个字符的字符的正则表达式匹配

python - 将列表的所有元素相乘(另一个列表索引超出范围的问题)

javascript - 尝试在网站上抓取由谷歌地图API生成的动态数据,但正常抓取返回空白

python - 在简单的 python 脚本中创建 django 密码

Python 查找出现次数超过 3 次的重复项

python - Tensorflow:简单图像图像分类器在时代之间根本不更新

c# - 大型 RegEx 匹配导致程序挂起

Python:更改导入字典中的值没有效果