regex可以返回匹配项和扩展匹配项。我的意思是一个regex表达式,它可以根据结构返回不同数量的已找到元素。我的文字是:
AB : CDE / 123.456.1; 1
AC : DEF / 3.1.2
我的回报(匹配)应该是:
'AB', 'CDE', '123.456.1', '1'
'AC', 'DEF','3.1.2'
因此,如果分号后面有一个值,那么regex应该匹配并返回该值。但如果没有,它仍然应该匹配的一部分,并返回其余的。你知道吗
我的代码是:
import re
s = '''AB : CDE / 123.456.1; 1
AC : DEF / 3.1.2'''
match1 = re.search(r'((?:AB|AC))\s*:\s*(\w+)\s*\/\s*([\w.]+)\s*(;\s*\d+)', s)
print(match1[0])
match2 = re.search(r'((?:AB|AC))\s*:\s*(\w+)\s*\/\s*([\w.]+)\s*', s)
print(match2[0])
其中match1只匹配第一次发生,match2只匹配第二次发生。在这两种情况下,正则表达式的工作原理是什么?你知道吗
r'((?:AB|AC))\s*:\s*(\w+)\s*\/\s*([\w.]+)\s*(;\s*\d+)'
模式在末尾包含一个强制的(;\s*\d+)
模式。您需要使它成为可选的,并且您可以通过在它后面添加?
量词来实现,以便匹配子模式的1或0次出现。你知道吗对于其他小增强,您可以使用
注意:所有捕获组都被删除,而非捕获组则被引入,因为最后只能得到整个匹配值。你知道吗
细节
A[BC]
-AB
或AC
\s*:\s*
-用0+空格字符括起来的冒号\w+
-或更多单词字符\s*/\s*
-a/
用0+空格字符括起来[\w.]+
-1个或多个单词或.
字符\s*
-0+空格(?:;\s*\d+)?
-一个可选的;
-a;
\s*
-0+空格\d+
-1+位相关问题 更多 >
编程相关推荐