![](/img/trans.png)
[英]python regex match line containing numbers after string with digit at end
[英]REGEX (python) match or return a string after '?', but in a new line, til the end of that line
在这里,我们正在尝试做的事情...我有一个字符串结构如下:
stringparts.bst? (回车)765945559287eghc1bg60aa26e4c9ccf8ac425725622f65a6lsa6ahskchksyttsutcuan99(回车)SPAM / 198975 /
我需要它来匹配或返回此:
765945559287eghc1bg60aa26e4c9ccf8ac425725622f65a6lsa6ahskchksyttsutcuan99
什么正则表达式可以解决问题?
我已经尝试过了,但是无济于事:(
bst \\?(。*)\\ n
感谢advc
我试过了 假设换行符只有一个字符。
>>> s
'stringparts.bst?\n765945559287eghc1bg60aa26e4c9ccf8ac425725622f65a6lsa6ahskchks
yttsutcuan99\nSPAM /198975/'
>>> m = re.match('.*bst\?\s(.+)\s', s)
>>> print m.group(1)
765945559287eghc1bg60aa26e4c9ccf8ac425725622f65a6lsa6ahskchksyttsutcuan99
您的正则表达式将匹配bst?
之间的bst?
和第一个换行符什么都没有。 我认为您想匹配前两个换行符之间的所有内容。
bst\?\n(.*)\n
可以,但是您也可以使用
\n(.*)\n
尽管它可能不适用于其他一些更具体的情况
这对于不同种类的换行符更为健壮,如果您有完整的此类字符串列表,则可以使用。 $
和^
代表行的开头和结尾,但不代表实际的换行符(因此为\\s+
序列)。
import re
BST_RE = re.compile(
r"bst\?.*$\s+^(.*)$",
re.MULTILINE
)
INPUT_STR = r"""
stringparts.bst?
765945559287eghc1bg60aa26e4c9ccf8ac425725622f65a6lsa6ahskchksyttsutcuan99
SPAM /198975/
stringparts.bst?
another
SPAM /.../
"""
occurrences = BST_RE.findall(INPUT_STR)
for occurrence in occurrences:
print occurrence
此模式允许在\\n
之前有其他空格:
r'bst\?\s*\n(.*?)\s*\n'
如果您不希望在字符串中捕获任何空格,则可以使用一个更简单的空格,其中\\s+
占用空格,包括\\n
,而(\\S+)
捕获所有连续的非空格:
r'bst\?\s+(\S+)'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.