Pythonの生の文字列についてちょっと混乱しました。生の文字列を使用すると、通常のバックスラッシュ(例:r '\ n'は '\'と 'n')として '\'を扱うことがわかります。しかし、生の文字列に改行文字をマッチさせたいのではないかと思っていました。私はr '\ n'を試みたが、うまくいかなかった。誰もがこれについて良いアイデアを持っていますか?Pythonの生の文字列の改行文字の一致方法
答えて
、あなたは複数行モードにしていることを指定する必要があります:re
は改行に\n
(生の文字列)を変換すること
>>> import re
>>> s = """cat
... dog"""
>>>
>>> re.match(r'cat\ndog',s,re.M)
<_sre.SRE_Match object at 0xcb7c8>
は注意してください。あなたのコメントで示されているように、それが一致するためにあなたが実際には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
これはなぜ? –
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. 改行文字のみと一致
- 2. pexpect:文字列の一致方法
- 3. Pythonの文字列から改行文字を検索する方法
- 4. 文字列の改行数
- 5. 改行でのPython分割文字列と改行の維持
- 6. ユニコード文字列の一致
- 7. プロトタイプの文字列一致
- 8. mySQL文字列の一致
- 9. リピート文字列の一致
- 10. 生の文字列に改行を挿入せずに生の文字列リテラルを折り返す方法は?
- 11. 文字列の配列と文字列の一致
- 12. 一致文字列
- 13. ファイルからの文字列がPythonの文字列と一致しません
- 14. 文字列内のすべての文字列と一致する文字列を取り除く方法
- 15. パーセントマッチ文字列を含む文字列とのMySQLの一致
- 16. Javaでの文字列のファジー文字列一致
- 17. 文字列の配列が文字列と一致する
- 18. 文字列内の各文字の最初の一致を一致させる
- 19. Solr MoreLikeこのクエリは改行文字と一致します
- 20. 文字列探索 - 一致する文字列の複雑
- 21. 通常の文字と春の特殊文字との一致文字列
- 22. 複数の改行文字を文字列から削除する方法
- 23. Python Doctestの特殊文字と改行
- 24. のpythonは、スペースや改行文字
- 25. 1文字の許容値と文字列を一致させる方法は?
- 26. 一文字の文字列
- 27. perlの2つの文字列とハイライト不一致文字
- 28. 一致する文字列の最後の文字を取得
- 29. Python生の文字列
- 30. apache luceneの文字列のリストのパーセンテージの一致方法
私たちが話している試合のどのような種類ここに?正規表現のマッチについて話していますか、単にif ... in my_raw_string'ですか? – mgilson
ご迷惑をおかけします。私は正規表現について話している。 – wei