2016-09-09 1 views
0
def check(text): 
    pattern = re.compile(r'\\') 
    rv = re.match(pattern, text) 
    if rv: 
     return True 
    else: 
     return False 

print check('\mi') # True 
print check('\ni') # False 

実際には、 '\'が含まれているテキストには違法です。テキストをチェックする方法は、

しかし、 '\ n'、 '\ b'など、pythonはそれらを特別に扱うので、私はそれらを一致させることはできません。

どのようなソリューションですか?

+0

**あなたのパターンとして** "\\\\" **を試してください。私はPythonのために一度それをエスケープしなければならないかもしれないと思う、そして再び正規表現コンパイラのために_エスケープする。 – byxor

+3

まず、 're.match'は文字列を最初から一致させて、' re.search'を使ってテキスト全体を検索することができます。次に、この単純なタスクのために正規表現を必要としません。単に ' in演算子。 – Kasramvd

+1

ソースコードに ''\ ni''がある場合、文字列にはバックスラッシュは含まれません。文字列に改行とそれに続く 'i'が含まれています。文字列の**表現**と文字列の内容を混同しないでください。 – Matthias

答えて

0
def check(text): 
    rv = re.search('(\\\\)|(\\\n)', string) 
    if rv: 
     return True 
    else: 
     return False 
string = "\mi" 
print check(string) 
string = "\ni" 
print check(string) 

結果:

=============================== = RESTART ===============

True 
True 

\\\nは、NEを含みますワイン \nの場合、\\をエスケープし、\nを追加すると、この方法で具体的に検索できます。 \bなどで動作します。

+0

string = "\ ni" return False – bin381

+0

奇妙な私は2でこれをテストしましたどちらの場合も、異なるマシン(VDI)がTrueを返します。 –

+0

https://repl.it/D87S オンライン証明with repl –

1

なぜ正規表現を使用する必要がありますか?

return '\\' in text 
+0

残念ながら、 'r '\''は期待通りに動作しません。例えば、 https://stackoverflow.com/questions/30283082/why-does-the-single-backslash-raw-string-in-python-cause-a-syntax-error(いい回答はありませんが)。 – tripleee

関連する問題