python中带有[和*的正则表达式

Posted

技术标签:

【中文标题】python中带有[和*的正则表达式【英文标题】:Regex expression with [ and * in python 【发布时间】:2019-01-19 21:43:34 【问题描述】:

我有一个像这样行的文件

variable = epms[something][something]

我需要通过搜索 epms 找到这些行。

目前,我正在尝试这个:

regex = re.compile('[.]*epms\[[.]*\]\[[.]*\][.]*')

但是,这找不到任何匹配项。我做错了什么?

【问题讨论】:

[.] 匹配文字点字符。您需要删除.s 周围的[] 另见***.com/questions/19976018/… 试试\^*epms[.*?][.*?] 如果您正在寻找确切的字符串,为什么要使用正则表达式? 【参考方案1】:

你可以使用模式:

epms\[[^]]+\]\[[^]]+\]
epms 匹配文字子串。 \[ 匹配 [[^]]+ 否定字符集。除了] 之外的任何内容。 \] 匹配 ]\[ 匹配 [[^]]+ 否定字符集。除了] 之外的任何内容。 \] 匹配]

在 Python 中:

import re

mystring = "variable = epms[something][something]"
if re.search(r'epms\[[^]]+\]\[[^]]+\]',mystring):
    print (mystring)

【讨论】:

感谢您的完整解释!【参考方案2】:

试试这个模式epms\[.*\]\[.*\]

例如:

import re

with open(filename1) as infile:
    for line in infile:
        if re.search(r"epms\[.*\]\[.*\]", line):
            print(line)

【讨论】:

【参考方案3】:

试试这个,在 Python3 中测试过:

>>> s = 'variable = epms[something][something]'
>>> re.match(r'.*epms\[.*\]\[.*\]', s)
<_sre.SRE_Match object; span=(0, 37), match='variable = epms[something][something]'>

您不需要方括号来标识“任何字符”。

【讨论】:

以上是关于python中带有[和*的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

确定字符串是不是是Java中带有正则表达式的URL [重复]

欧芹验证中带有自定义域的电子邮件的正则表达式是啥

如何在 Tkinter 文本搜索方法中使用正则表达式?

Python 和 Javascript 正则表达式有啥不同?

python-正则表达式

在VS中用正则表达式查找或替换