2016-06-23 3 views
0

「x」と「x」の後に別の「x」が付いていない限り、「x」と右側の空白をどのように一致させることができますか?文字が存在しない限り一致する正規表現ですか?

は、これまでのところ私が持っている:

find_nonSpace_rightSideOf_x = re.compile(r'x[\s]*') 

しかし、明らかに、これはまだテキストは「XX」である場合にもキャッチします。どうすればこの 'xaldkfjda'、 'x'、 'x adkf'などのキャッチができますが、 'xxaldkfjdlk'、 'xx'などの最初のxはキャッチできませんか?

EDIT:最後の文の最後に「... xxaldkfjdlk」、「xx」などの最初の2つのxは含まれていませんか?要するに、私は1つの 'x'を捕まえたいが、決して2つのx 'xx'を並べることはない。それは役に立ちますか?これまでのご意見ありがとうございます!

+0

あなたは、xをエスケープするのですか? –

+1

サンプル出力と予想される一致を入力できますか? –

答えて

2

使用負の先見の主張:

re.compile(r'x(?!x)') 

ウィルキャッチ'xxaldkfjdlk'

xではなく、最初のx

キャッチスペース、追加:\s*件の

re.compile(r'x(?!x)\s*') 

いくつかの臨床試験:

>>> m = re.compile(r'x(?!x)\s*') 
>>> m.search('xx ') 
<_sre.SRE_Match object; span=(1, 4), match='x '> 
>>> m.search('xxaldkfjdlk') 
<_sre.SRE_Match object; span=(1, 2), match='x'> 
>>> m.search('xxxx') 
<_sre.SRE_Match object; span=(3, 4), match='x'> 
2

別の簡単な解決策は、このようになります:

x[^x][\s]* 

すなわち、 'x'の後に「not-x」が続き、スペースが続きます。私はあなたの質問を理解している場合http://pythex.org/

+0

この正規表現は 'x'と' x'ではなく複数の空白にマッチします –

+0

あなたが書いている間に編集していたと思います。 :) –

+0

私はあなたが 'x [^ x] * \ s *'と書いていたと思います。 –

2

が正しく、あなたが行の末尾に最後のxを一致させたい:

ところで、非常に便利なツールは、Pythonの正規表現テスターです。あなたは、この正規表現を使用することができることを行うには

:何のため

x[^x]*$ 

Working demo

enter image description here

関連する問題