我对Python原始字符串有点困惑。我知道,如果我们使用原始字符串,那么它会将'\'视为正常反斜杠(例如r'\ n'将是'\'和'n')。但是,我想知道如果我想匹配原始字符串中的新行字符。我试过r'\ n',但没有奏效。有人对此有一些好的想法吗?如何匹配Python原始字符串中的新行字符
回答
在正则表达式,你需要指定你在多行模式是:
>>> import re
>>> s = """cat
... dog"""
>>>
>>> re.match(r'cat\ndog',s,re.M)
<_sre.SRE_Match object at 0xcb7c8>
注意re
平移\n
(原始字符串)转换成换行符。正如你在你的评论所指出的,你实际上并不需要re.M
它来搭配,但它确实有更直观的匹配$
和^
帮助:
>> re.match(r'^cat\ndog',s).group(0)
'cat\ndog'
>>> re.match(r'^cat$\ndog',s).group(0) #doesn't match
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> re.match(r'^cat$\ndog',s,re.M).group(0) #matches.
'cat\ndog'
最简单的答案就是不使用原始字符串。您可以使用\\
来避免反斜杠。
如果你有反斜杠的庞大的数字在某些领域,那么你可以串联原始字符串和正常的字符串作为需要:
r"some string \ with \ backslashes" "\n"
(Python的自动串接字符串常量,它们之间仅有空格。)
记住,如果你是在Windows上的路径工作,最简单的选择是仅使用正斜杠 - 它仍然会正常工作。
@mgilson我只是检查它与原始字符串和普通字符串一起工作,因为它不是我所做的。像编辑一样。实际上它会更好一些,因为我相信这个连接是在解析时完成的,而不是在执行时。 –
是啊,我从来没有真正前,现在要么:) – mgilson
检查为什么-1对此有何看法? –
def clean_with_puncutation(text):
from string import punctuation
import re
punctuation_token={p:'<PUNC_'+p+'>' for p in punctuation}
punctuation_token['<br/>']="<TOKEN_BL>"
punctuation_token['\n']="<TOKEN_NL>"
punctuation_token['<EOF>']='<TOKEN_EOF>'
punctuation_token['<SOF>']='<TOKEN_SOF>'
#punctuation_token
regex = r"(<br/>)|(<EOF>)|(<SOF>)|[\n\!\@\#\$\%\^\&\*\(\)\[\]\
{\}\;\:\,\.\/\?\|\`\_\\+\\\=\~\-\<\>]"
###Always put new sequence token at front to avoid overlapping results
#text = '<EOF>[email protected]#$%^&*()[]{};:,./<>?\|`~-= _+\<br/>\n <SOF>\ '
text_=""
matches = re.finditer(regex, text)
index=0
for match in matches:
#print(match.group())
#print(punctuation_token[match.group()])
#print ("Match at index: %s, %s" % (match.start(), match.end()))
text_=text_+ text[index:match.start()] +" "
+punctuation_token[match.group()]+ " "
index=match.end()
return text_
- 1. re.search如何匹配原始字符串?
- 2. 加密字符串以匹配原始字符串的长度
- 3. 如何使字符串作为Python中的原始字符串?
- 4. 如何计算python中的字符串中的字符匹配?
- 5. Python原始字符串
- 6. Python匹配字符串中的数字
- 7. 的Python:如何采取行动重新的匹配字符串
- 8. 原型js中的字符串匹配
- 9. Python字符串匹配
- 10. python xlrd字符串匹配
- 11. mysql匹配字符串与表中字符串的开始
- 12. 原始Python字符串中的回车
- 13. Python中的原始字符串Objective-C
- 14. 如何使用原始匹配值替换字符串
- 15. Scala:如何使用原始匹配值替换字符串
- 16. 如何获得字符串,如果子字符串匹配在开始或中间,在Python的重新?
- 17. Python - 原始字符串文字
- 18. 如何匹配字符串或字符开头的Python
- 19. 如何匹配字符串?
- 20. NSPredicate用字符串匹配起始字
- 21. python:如何将字符串文字转换为原始字符串文字?
- 22. Python中找到该字符串匹配的随机字符串
- 23. 阶字符串,原始字符串
- 24. Nspredicate匹配字符串中的字符
- 25. emacs lisp中的字符串匹配匹配任意字符串
- 26. 如何从python中的字符串变量创建原始字符串?
- 27. 匹配字符串中的字符串以强调字符串
- 28. Python中字符串的完全匹配
- 29. 在Python中匹配的字符串
- 30. python中的字符串匹配
,我们在谈论什么样的比赛这里?你是在谈论一个正则表达式匹配,或者只是一个'if ... in my_raw_string'? – mgilson
很抱歉让您困惑。我正在谈论一个正则表达式。 – wei