pyperclip.paste()
如果搜索表达式涉及\n
换行符,则在尝试使用 regex 槽 a 进行搜索时,这对我来说是一件罕见的事情。
原谅我的英语。
搜索时,我通过分配给text
变量的这个三引号进行搜索:
import re
text = '''
This as the line 1
This as the line 2
'''
pattern = re.compile(r'\d\n\w+')
result = pattern.findall(text)
print(result)
它实际上打印了换行符\n
。这就是我想要的,或者几乎是我所期望的。
»»» ['1\n这个']
但是,当要搜索的字符串来自从剪贴板复制的文本时,问题就开始了。
This as the line 1
This as the line 2
假设我只是选择该文本并将其复制到剪贴板,并且我希望正则表达式从中提取相同的先前输出。这次我需要使用 pyperclip 模块。
所以,忘记前面的代码,改写这个:
import re, pyperclip
text = pyperclip.paste()
pattern = re.compile(r'\d\n\w+')
result = pattern.findall(text)
print(result)
这是结果:
»»» [ ]
什么都没有,只有两个括号。我发现(以我的经验不足)导致此问题的问题是\n
角色。它与python(也是\n字符)之间的冲突无关,因为我们用'r'避免了这种情况。
我已经找到了一个不太清楚的解决方案(对我来说几乎,因为我现在只是了解python的基础知识)。
import re, pyperclip
text = pyperclip.paste()
lines = text.split('\n')
spam = ''
for i in lines:
spam = spam + i
pattern = re.compile(r'\d\r\w+')
result = pattern.findall(spam)
print(result)
请注意,我没有选择在最后一个正则表达式中\n
检测新行\r
,而是选择(\n
将导致相同的不良行为仅打印括号)。
\r
它可与 交换\s
,输出有效,但是:
»»» ['1\rThis']
用\r
而不是\n
至少这对我来说是一个小小的胜利。
如果您能向我解释一个更好的解决方案,这将对我有很大帮助,或者几乎理解为什么会发生这种情况。您还可以推荐一些要调查的概念,以充分理解这一点。