import re
text = 'gfgfdAAA1234ZZZuijjk'
m = re.search('AAA(.+?)ZZZ', text)
if m:
found = m.group(1)
# found: 1234
或:
import re
text = 'gfgfdAAA1234ZZZuijjk'
try:
found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
# AAA, ZZZ not found in the original string
found = '' # apply your error handling
# found: 1234
text = 'I want to find a string between two substrings'
left = 'find a '
right = 'between two'
print(text[text.index(left)+len(left):text.index(right)])
19条答案
按热度按时间pkmbmrz71#
如果没有匹配项,则返回另一个字符串的一行程序。编辑:改进版本使用
next
功能,替换"not-found"
如果需要,可以使用其他工具:我的另一种方法,不太理想,第二次使用regex,仍然没有找到一种更短的方法:
jmo0nnb32#
打字稿。获取其他两个字符串之间的字符串。
在前缀和后缀之间搜索最短字符串
前缀-字符串/字符串数组/null(表示从开始搜索)。
postfix-字符串/字符串数组/null(表示搜索到结尾)。
vfh0ocws3#
使用正则表达式-供进一步参考的文档
或:
hc8w905p4#
然后,您也可以将regexps与re模块一起使用,如果您愿意的话,但在您的情况下这不是必需的。
bgibtngc5#
正则表达式
上述原样将以失败告终
AttributeError
如果在中没有“aaa”和“zzz”your_text
####字符串方法如果中不存在“aaa”或“zzz”,则上述内容将返回空字符串
your_text
.ps python挑战?
gkn4icbw6#
令人惊讶的是,没有人提到这是我的一次性脚本快速版本:
zlhcx6iw7#
idfiyjo88#
您只需使用一行代码即可完成
结果将收到列表。。。
bxjv4tth9#
您可以使用re模块进行以下操作:
t98cgbkg10#
使用sed,可以使用字符串执行以下操作:
echo "$STRING" | sed -e "s|.*AAA\(.*\)ZZZ.*|\1|"
这个结果会给我1234。你也可以这样做
re.sub
函数使用相同的正则表达式。在基本sed中,捕获组由
\(..\)
,但在python中,它由(..)
.iugsix8n11#
在python中,可以使用
findall
正则表达式中的方法(re
)模块。kcwpcxri12#
u91tlkcl13#
您可以在代码中找到使用此函数的第一个子字符串(按字符索引)。此外,您还可以找到子字符串后面的内容。
arknldoa14#
给予
6bc51xsx15#
以防万一有人会做和我一样的事。我必须把括号里的所有东西都提取出来。例如,如果我有一句像“美国总统(巴拉克·奥巴马)会见……”这样的话,我只想得到“巴拉克·奥巴马”,这就是解决方案:
i、 e.您需要使用
slash \
签名尽管这是一个关于python中更多正则表达式的问题。此外,在某些情况下,您可能会在正则表达式定义之前看到“r”符号。如果没有r前缀,则需要使用c中的转义字符。这里有更多的讨论。