用于处理特殊符号的正则表达式

时间:2012-02-23 11:48:43

标签: python regex

我在这里有一个例子:

>>> txt1
'fdf\\.\\..dgg'

我打算找到一个正则表达式,它会返回特殊符号。

所以我试过这个。

>>> ans=re.search("\w+[\|.]*\w+",txt1)
>>> ans.group()
'fdf'

\ w +会发现单词仍在继续。 [\ |。]应该找到\或。 (点)。该明星应该继续下一次入场。 再次,\ w +应该找到尾随的单词。

请指导这里有什么问题? 或者这个概念并不完全是我认为的...... 在此先感谢所有人.... 如你所见,这个想法不起作用。

4 个答案:

答案 0 :(得分:1)

“我打算找一个能让我返回特殊符号的正则表达式。”

re.search(r"\w+([\\\.]*)\w+", txt1)

找到ans.group(1)您需要的内容:

ans = re.search(r"\w+([\\\.]*)\w+", txt1)
ans.group(1)

# '\\.\\..'

[]设计了一组字符(没有|“或”),但您必须使用反斜杠\. -> \\\.来反转斜杠和点以匹配它。

答案 1 :(得分:1)

如果您想在那里找到不是字母数字的任何内容(包括空格),请使用:

[^\w]+

答案 2 :(得分:1)

您不能在字符类中使用交替运算符|。在[ ]内,管道代表该字符。你的反斜杠逃脱它(不必要)所以你正在寻找管道或点。你想要的是

ans=re.search(r"\w+[\\.]*\w+", txt1)

答案 3 :(得分:0)

由于您要查找特殊符号,re.findall(r"[a-z]*([.\\] ?)[a-z]*", txt1)会将您的符号作为列表返回。您可以根据需要始终join()(示例如下所示):

>>> 
>>> txt1
'fdf\\.\\..dgg'
>>> ans = re.findall(r"[a-z]*([.\\] ?)[a-z]*", txt1)
>>> ans
['\\', '.', '\\', '.', '.']
>>> 
>>> "".join(ans)
'\\.\\..'
>>>