我只是想了解一下regex在python中是如何工作的,但是有些语法让我有点不知所措。
如何将以下正则表达式转换为可以由python中的re模块使用的正则表达式?
a(b|c)*a
符号是什么并不重要,我更多地询问括号和运算符,它们是如何工作的。
如果我要具体说明我的情况,我试图捕捉两个尖括号之间的所有文本。根据我读过的一些资源,“。”字符匹配除换行符之外的任何字符,“s”匹配任何空格,包括换行符,所以我认为这样做的方法是:
<[.|s]*>
但显然我错了。
我对我的具体问题的解决方案感兴趣,但是对于python正则表达式中的运算符的任何一般信息也将受到赞赏。
修改
经过更多的实验后,它似乎在我使用时起作用:<.*>
当我有像
这样的文字时<foo bar>
但不是我什么时候
<foo
bar>
然而,当我尝试
时<[\n.]*>
没什么作用。所以我认为这可能是括号做的事情或其他事情,所以我尝试过:
<[.]*>
并且它甚至不像<.*>
那样工作..但当然,除了括号之外,两者是相同的。
<foo
bar>
答案 0 :(得分:3)
这里清楚地记录了python正则表达式语法:
https://docs.python.org/2/library/re.html
对于您的具体情况,我会尝试类似:
import re
pat = re.compile('<([^>]*)>')
match = pat.search('Foo <bar> bam')
print match.groups()
# should print ('bar',)
要理解正则表达式,我们可以将其分解为组成部分:
答案 1 :(得分:0)
a(b|c)*a
可直接用作Python re。 <[.|s]*>
是混乱的混乱。 [
... ]
是一个字符范围:|
内部没有业务。 s
不表示Python正则表达式中的空格;相反\s
。也许你在这里|s
与\s
混淆(但在这里使用\n
和/或使用相应的标志使.
也与换行符匹配会更有意义)。