2016-12-27 16 views
1

問題:私は入力文字列内のすべてのオカレンスについて、inbetweenと/ * * /を含む文字列を削除しようとしています。Python - 2つのデリミタ間のコンテンツを削除する正規表現

input = /* comment */ variable owner; /* comment */ 
output = variable owner; 

現在、私はやって試してみました:

output = re.sub("//*[^]+*//", '', input) 
output = re.sub("/*[^]+*//", '', input) 

どれ指導をいただければ幸いです。

+0

Pythonでは、 '[^]'は無効なパターンです。 –

+0

どのようにして/ * * /の間にすべてのコンテンツを指定できますか?私はこれがこれを行う一つの方法だと思った。 – user3447041

答えて

1

あなたはPythonで[^]パターンを使用することはできません、(Pythonで(?s).として)に任意のの文字にマッチするJavaScriptの唯一のパターンです。

ただし、正規表現にマッチする優れた複数行のコメントを使用することがあります。

/\*[^*]*\*+(?:[^/*][^*]*\*+)*/ 

this regex demoを参照してください。これは(?s)/\*.*?\*//*に一致し、0以上の文字が最初の*/に一致するアンロールされたものです。追加のスペースを取り除くために

/\*[^\*]+\*/\s? 

:そうでなければ、あなたはこの1つを試すことができ

output = re.sub("/\*[^\*]+\*/", '', input) 

import re 
s = '/* comment */ variable owner; /* comment */' 
rx = r'/\*[^*]*\*+(?:[^/*][^*]*\*+)*/' 
print(re.sub(rx, '', s)) 

あなたはこれを試すことができPython demo

0

を参照してください。

関連する問題