带有输入搜索字符串的Python正则表达式特殊字符

带有输入搜索字符串的Python正则表达式特殊字符,python,regex,search,text-files,Python,Regex,Search,Text Files,多亏了这里一些最优秀的成员的帮助,我已经学习了很多关于正则表达式的知识,并且使这个半工作。我需要添加字符:,:;-?我的正则表达式搜索。问题是我正在将输入的搜索字符串传递给正则表达式,但不知道如何使其工作 代码如下: text = open_file.read() grammarList = raw_input("Enter your grammar string: "); tags = grammarList.split("^") tags_pattern = r"\b" + r"\s+".

多亏了这里一些最优秀的成员的帮助,我已经学习了很多关于正则表达式的知识,并且使这个半工作。我需要添加字符:,:;-?我的正则表达式搜索。问题是我正在将输入的搜索字符串传递给正则表达式,但不知道如何使其工作

代码如下:

text = open_file.read()

grammarList = raw_input("Enter your grammar string: ");
tags = grammarList.split("^")
tags_pattern = r"\b" + r"\s+".join(r"(\w+)/{0}".format(tag) for tag in tags) + r"\b" 
# gives you r"\b(\w+)/NNP\s+(\w+)/CC\s+(\w+)/NNP\b"

from re import findall
start_position = 0

for poem in poemList:
    start_position = text.find('<' + poem + '>', start_position)
    end_position = text.find('</' + poem + '>', start_position)

    searchtext = text [start_position:end_position]
    poemname = poem
    for oldname, newname in poemtitleswapList.items():
        poemname = poemname.replace(oldname, newname)
    print poemname
    print(findall(tags_pattern, searchtext))
    print "\n"

它适用于除逗号、圆括号、句点、分号、问号、冒号、破折号和引号以外的所有字符。我也需要它来找到这些东西。任何帮助都将不胜感激。

您可以使用re.escapetag对正则表达式中具有特殊意义的字符进行转义。要允许在左侧使用非单词字符,可以将\w+/替换为[^/]+/:


使用XML解析器从文本而不是文本中提取searchtext。查找文本是否包含XML。谢谢sebastion,我应该更具体一些。我还在学着道歉。它搜索正斜杠右侧的大写字母或符号。因此,如果我在^DT中键入NN^in^DT,它将匹配斜杠右侧文本文件中按顺序出现的所有时间。我需要能够包含这些其他类型的字符,以便在^PRP^中运行VBZ^搜索,谢谢您的帮助,但这根本不起作用。它正在输出疯狂的字符串。我在斜杠右边搜索一个不确定长度的标签,它应该返回右边对应的单词。如果我在其中输入^NN^,它会搜索一个巨大的文本文件,每次它都会返回该序列中的3个标记,然后返回标记左侧的每个对应单词。它现在可以工作,但不会返回标点符号。@English Grad:确实可以。点击您可以在ideone页面上使用新输入的“点击上载”示例进行尝试。@English Grad:第一行应该是语法字符串,请参阅。
To/TO
emotion/NN
for/IN
all/DT
there/EX
is/VBZ
in/IN
it/PRP
,/,
pattern = r'\s+'.join(r"^([^/]+)/{0}".format(re.escape(tag)) for tag in tags)
print re.findall(pattern, searchtext, re.M)
[('is', 'in', 'it', ',')]