获取特定文本中的文本?

2024-09-24 22:16:54 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在特定文本中获取文本? 比如,如果我有这样的文字:

'lololol \r asdfasdf r\ gfhfgr'

如何让它返回“asdfasdf”。基本上,获取位'\r''r\'之间的文本?在


Tags: 文本文字asdfasdflolololgfhfgr
2条回答

另一个解决方案

import re

s = r'lololol \r asdfasdf r\ gfhfgr'
pattern = re.compile('\\\\r (.*?) r\\\\')

print pattern.findall(s)

结果是['asdfasdf']

编辑:

好吧,伙计,这就是你在你的例子中想要的。如果您愿意,欢迎使用

^{pr2}$

它会给你[' asdfasdf ']。在

“All the slashes”是必需的,因为Python和re解析字符串的方式不同;斜杠用作有向图的转义符,如\n(换行符)。{cd4>你必须用斜杠来表示。请尝试print('\\')查看此内容。在

然后必须将其加倍,因为根据字符串本身的一组有向图(对于数字,\s表示空白,等等)重新解析字符串。因此,如果输入'\\\\',Python将其理解为一个由两个斜杠组成的字符串,\\,它传递给re,re解析它并认为您在寻找一个\字符。在

有时,您可以不这样做;如果您有一个类似'\m'的字符串,其中尾随字符没有生成有效的有向图,那么结果实际上是两个字符的字符串\m(请尝试print('\m'))。\r有点古怪;Python将其识别为回车有向图,但re不使用\r作为有向图,因此给Python“\r”或“\\r”都会导致重新查找文本字符串“\r”。我更喜欢双双斜杠,因为这意味着你不必记住两个不同的定义,什么是合法有向图,什么是非法有向图!另一方面,Python和re都将\'识别为单引号有向图(print('\'')打印一个'字符),因此这两个斜杠都必须完全双转义,否则您将得到一个“嘿,字符串的其余部分在哪里?”错误(“字符串未终止”)。在

另一种方法是输入原始字符串(r'abc');这告诉Python不要解析字符串中的有向图,但re仍然会这样做,因此您的模式必须看起来像

pattern = re.compile(r'\\r(.*?)r\\')

可以在Python中使用正则表达式。在

>>> import re
>>> s = 'lololol \r asdfasdf r\ gfhfgr'
>>> e = re.search(r'\r (?P<boxflux>.*) r\\', s)
>>> e.group('boxflux')
'asdfasdf'

在boxflux.com网站在

相关问题 更多 >