如何在特定文字中获取文字? 就像,如果我有这样的文字:
'lololol \r asdfasdf r\ gfhfgr'
如何让它返回'asdfasdf'。基本上,在'\r'
和'r\'
位之间获取文本?
答案 0 :(得分:4)
另一种解决方案,
import re
s = r'lololol \r asdfasdf r\ gfhfgr'
pattern = re.compile('\\\\r (.*?) r\\\\')
print pattern.findall(s)
结果为['asdfasdf']
修改强>
嗯, dude ,这就是你在你的例子中所说的你想要的。如果您愿意,欢迎您使用
pattern = re.compile('\\\\r(.*?)r\\\\')
将改为为您提供[' asdfasdf ']
。
\n
(换行符)等有向图的转义字符。因此,要表示斜杠,必须使用\\
有向图。请尝试print('\\')
查看此内容。
然后你必须加倍它,因为再次根据它自己的有向图集解析字符串(\ d表示数字,\ s表示空格等)。因此,如果您输入'\\\\'
,Python会将其理解为由两个斜杠组成的字符串\\
,它将传递给re,它会解析它并认为您正在寻找单个\
字符。
有时你可以不办理此事而离开;如果你有一个像'\m'
这样的字符串,其中尾随的字符不会产生有效的有向图,结果实际上是两个字符的字符串\m
(try print('\m')
)。 \ r \ n有点时髦; Python将其识别为回车符号,但是不会将\ r用作有向图,因此给Python'\ r'或'\\ r'都会导致重新查找文字字符串'\ r'。我更喜欢双重双斜线,因为这意味着你不必记住两个单独的定义是什么或不是一个合法的有向图!另一方面,Python和重新认识到'作为单引号有向图(print('\'')
打印'
字符) - 所以两个斜杠必须完全双重转义或者你会得到一个“嘿,其余的字符串在哪里?”错误('字符串未终止')。
另一种方法是输入原始字符串(r'abc'
);这告诉Python不要解析字符串中的有向图,但是仍然会这样做,所以你的模式必须看起来像
pattern = re.compile(r'\\r(.*?)r\\')
答案 1 :(得分:2)
您可以在Python中使用正则表达式。
>>> import re
>>> s = 'lololol \r asdfasdf r\ gfhfgr'
>>> e = re.search(r'\r (?P<boxflux>.*) r\\', s)
>>> e.group('boxflux')
'asdfasdf'
boxflux.com