我有一个类似这样的东西:
有没有正则表达式代码可以获得以下内容:
即,我希望保留大括号内的圆括号中的数字,并保留在其中的“ok”文本。如果我的行中包含该字符串“ok”,我需要特别打印出它,但我想要摆脱括号内的其他文本,例如(V),(S)或(2002)。
我知道使用正则表达式可能不是处理此类问题的最有效方法。
任何帮助都将不胜感激。
编辑:
由于某些信息不可用而未包含在该行中,因此该字符串可能会有所变化。 文本本身也是可变的(例如,我没有每行的“state”)。 因此,例如,可以有:
Othername California (2000) (T) (S) (ok) {state (#2.1)}
有没有正则表达式代码可以获得以下内容:
Othername California ok 2.1
即,我希望保留大括号内的圆括号中的数字,并保留在其中的“ok”文本。如果我的行中包含该字符串“ok”,我需要特别打印出它,但我想要摆脱括号内的其他文本,例如(V),(S)或(2002)。
我知道使用正则表达式可能不是处理此类问题的最有效方法。
任何帮助都将不胜感激。
编辑:
由于某些信息不可用而未包含在该行中,因此该字符串可能会有所变化。 文本本身也是可变的(例如,我没有每行的“state”)。 因此,例如,可以有:
Name1 Name2 Name3 (2000) (ok) {edu (#1.1)}
Name1 Name2 (2002) {edu (#1.1)}
Name1 Name2 Name3 (2000) (V) {variation (#4.12)}
2.1
,如果我们想考虑它的多个实例,例如{state (#2.1) yellow (33)}
,那么这将会更加困难。这种情况的问题在于:你“理论上”有两种解决方法:1) 向前和向后查找是否有{}
,但问题在于大多数正则表达式(包括 Python)中的向后查找必须是固定长度的 2) 使用子组匹配,类似于\{(?:.*?\((\w+)\).*?)+\}
,但这在大多数正则表达式中都不可用。因此,我认为仅凭正则表达式的力量,你的任务是不可能完成的。 - HamZa