python翻译中的正则表达式

python翻译中的正则表达式,python,regex,Python,Regex,我刚刚开始了解正则表达式在python中的工作原理,但其中的一些语法让我有些困惑 如何将以下正则表达式转换为python中re模块可以使用的正则表达式 a(b|c)*a 符号是什么并不重要,我更多的是问括号和运算符,它们是如何工作的 如果我要具体说明我的情况,我将尝试从两个尖括号中捕获所有文本。根据我阅读的一些参考资料,“.”字符匹配除换行符以外的任何字符,“s”匹配包括换行符在内的任何空格,因此我认为这样做的方法是: <[.|s]*> 但显然我错了 我对我的具体问题的解决方

我刚刚开始了解正则表达式在python中的工作原理,但其中的一些语法让我有些困惑

如何将以下正则表达式转换为python中re模块可以使用的正则表达式

a(b|c)*a
符号是什么并不重要,我更多的是问括号和运算符,它们是如何工作的

如果我要具体说明我的情况,我将尝试从两个尖括号中捕获所有文本。根据我阅读的一些参考资料,“.”字符匹配除换行符以外的任何字符,“s”匹配包括换行符在内的任何空格,因此我认为这样做的方法是:

<[.|s]*>

但显然我错了

我对我的具体问题的解决方案感兴趣,但是如果您能提供python正则表达式中运算符的一般信息,我将不胜感激

编辑:

经过更多的实验后,我使用:

<.*>

当我有像这样的文字

<foo bar>

但不是因为我有

<foo
bar>

然而当我尝试

<[\n.]*>

什么都不管用。所以我想可能是括号在做什么,所以我试着:

<[.]*>

这甚至不像
那样有效。。但肯定的是,除了括号外,两者是相同的

有人有什么想法吗?我希望能够捕获所有文本,如:

<foo
bar>

a(b|c)*a
可直接用作Python re<代码>是一团混乱
[
..
]
是一个字符范围:
|
内部没有业务
s
在Python正则表达式中不表示空格;相反,
\s
会。也许你把这里的
|s
\s
搞混了(但是在这里只使用
\n
和/或使用相应的标志让
也匹配一个换行符会更有意义)。

a(b | c)*a
可以直接用作Python代码<代码>是一团混乱
[
..
]
是一个字符范围:
|
内部没有业务
s
在Python正则表达式中不表示空格;相反,
\s
会。也许你把这里的
|s
\s
搞混了(但是在这里只使用
\n
和/或使用相应的标志让
也匹配一个换行符会更有意义)。

a(b | c)*a
可以直接用作Python代码<代码>是一团混乱
[
..
]
是一个字符范围:
|
内部没有业务
s
在Python正则表达式中不表示空格;相反,
\s
会。也许你把这里的
|s
\s
搞混了(但是在这里只使用
\n
和/或使用相应的标志让
也匹配一个换行符会更有意义)。

a(b | c)*a
可以直接用作Python代码<代码>是一团混乱
[
..
]
是一个字符范围:
|
内部没有业务
s
在Python正则表达式中不表示空格;相反,
\s
会。可能您在这里混淆了
|s
\s
(但是在这里只使用
\n
和/或使用相应的标志使
也匹配一个换行符会更有意义)。

这里清楚地记录了python正则表达式语法:

对于您的特殊情况,我会尝试以下方法:

import re
pat = re.compile('<([^>]*)>')
match = pat.search('Foo <bar> bam')
print match.groups()
# should print ('bar',)
重新导入
pat=re.compile(']*)>')
match=pat.search('Foo-bam')
打印match.groups()
#应打印('bar',)
为了理解正则表达式,我们可以将其分解为以下组成部分:

  • <-匹配左角支架
  • (-组的开始)
  • [^>]*-匹配类([^>])中的0个或多个字符(*)。字符类([]) 以插入符号(^)开头的字符表示匹配非部分字符 在这种情况下,类由单个 字符,右括号(>)
  • )-结束小组
  • >-匹配直角支架

这里清楚地记录了python正则表达式语法:

对于您的特殊情况,我会尝试以下方法:

import re
pat = re.compile('<([^>]*)>')
match = pat.search('Foo <bar> bam')
print match.groups()
# should print ('bar',)
重新导入
pat=re.compile(']*)>')
match=pat.search('Foo-bam')
打印match.groups()
#应打印('bar',)
为了理解正则表达式,我们可以将其分解为以下组成部分:

  • <-匹配左角支架
  • (-组的开始)
  • [^>]*-匹配类([^>])中的0个或多个字符(*)。字符类([]) 以插入符号(^)开头的字符表示匹配非部分字符 在这种情况下,类由单个 字符,右括号(>)
  • )-结束小组
  • >-匹配直角支架

这里清楚地记录了python正则表达式语法:

对于您的特殊情况,我会尝试以下方法:

import re
pat = re.compile('<([^>]*)>')
match = pat.search('Foo <bar> bam')
print match.groups()
# should print ('bar',)
重新导入
pat=re.compile(']*)>')
match=pat.search('Foo-bam')
打印match.groups()
#应打印('bar',)
为了理解正则表达式,我们可以将其分解为以下组成部分:

  • <-匹配左角支架
  • (-组的开始)
  • [^>]*-匹配类([^>])中的0个或多个字符(*)。字符类([]) 以插入符号(^)开头的字符表示匹配非部分字符 在这种情况下,类由单个 字符,右括号(>)
  • )-结束小组
  • >-匹配直角支架

这里清楚地记录了python正则表达式语法:

对于您的特殊情况,我会尝试以下方法:

import re
pat = re.compile('<([^>]*)>')
match = pat.search('Foo <bar> bam')
print match.groups()
# should print ('bar',)
重新导入
pat=re.compile(']*)>')
match=pat.search('Foo-bam')
打印match.groups()
#应打印('bar',)