如何在特定字符后的括号内返回字符串?我对方括号|#|
中()
之前的字符串感兴趣。给定两个字符串:
s1 = 'This is the part of the string not of interest LEMB(INTEREST)|#|IND'
s2 = 'someotherstring(NOT_OF_INTEREST)
我尝试过使用此正则表达式
pattern = r'(?=\#\|IND)\((.*?)\)'
results = re.findall(pattern,s1)
results[0][0]
应该返回
'INTEREST'
而results = re.findall(pattern,s2)
应该什么也不返回。
答案 0 :(得分:2)
您可以使用此正则表达式,
(?<=\()[^)]*(?=\)\|#\|)
说明:
(?<=\()
-这种积极的眼光确保了数据前面有文字(
[^)]*
-捕获您感兴趣的数据(?=\)\|#\|)
-积极向前看,以确保紧随其后的是)
和文字|#|
示例Python代码,
import re
arr = ['This is the part of the string not of interest LEMB(INTEREST)|#|IND','someotherstring(NOT_OF_INTEREST)']
for s in arr:
m = re.search(r'(?<=\()[^)]*(?=\)\|#\|)',s)
if (m):
print(s,' --> ',m.group())
else:
print(s,' --> No Match')
打印
This is the part of the string not of interest LEMB(INTEREST)|#|IND --> INTEREST
someotherstring(NOT_OF_INTEREST) --> No Match
答案 1 :(得分:1)
一个选项可能是匹配第一部分,然后使用捕获组来捕获括号之间的内容。然后确保后面是|#|IND
\(([^()]+)\).*?\|#\|IND
这将匹配
\(
匹配(([^()]+)
捕获与(
或)
不匹配的组\)
匹配).*?
如果在最后一个右括号之后可以包含任何内容,则将其匹配\|#\|IND
匹配|#| IND 如果最后一部分应该紧跟在右括号之后,请使用
\(([^()]+)\)\|#\|IND