【发布时间】:2022-01-18 13:19:49
【问题描述】:
主要问题是当我尝试创建由不同组组合的正则表达式时,我可以获得每个组的值。
我有一个这样的字符串:
some text here en Value1 (VALUE2)
我想创建一个正则表达式来获取三个子字符串:
-
some text here。是字符串开头和单词en之间的所有内容。 -
Value1。是en和第一个(之间的文本。 -
Value2。是()之间的文字。
我搜索了有关群组的信息并阅读了:
它们是通过将要分组的字符放在一组括号 (, ) 中来创建的。
括号 () 中的任何内容都是捕获组。
我们可以指定任意数量的组。一对括号内的每个子模式将被捕获为一个组。
所以我假设我需要一个包含三个组的正则表达式(即三个 (),其中每个括号都包含每个案例的正则表达式)。
所以我的想法是:查找您需要的每个正则表达式,并与 () 一起添加以创建组。所以我对这些组使用了这些正则表达式:
但是当我一起尝试所有正则表达式时:
(.+?(?= en))((?<=en\s).*?(?=\s\())((?<=\().+?(?=\)))
它没有得到组。实际上它没有找到任何组(example)。
我不知道我是否遗漏了有关在正则表达式中使用组的某些内容,但我无法做到这一点。
另外,我的python代码是:
import re
str = "some text here en Value1 (VALUE2)"
result = re.search(r"(.+?(?= en))((?<=en\s).*?(?=\s\())((?<=\().+?(?=\)))", str)
print(result.groups())
是的,我知道我可以遍历字符串并获取值,但如果可能的话,我想用regex 来做。
提前致谢。
【问题讨论】: