0

Python を使用して正規表現を使用して文字列を照合すると、1 つの問題が発生しました。

文字列の例:

ln[1] --これは文字列です--

ln[2] 以下の行に一致します。

ln[3] --これは文字列です--

ln[4] ここから始まるこの行に一致します。

ln[5] ~これで終わり~

上記の文字列で abc を抽出したい。

コード:

pattern = re.compile('%s(.*?)%s' % ('--This is a string--', '-This is the end-'))
re.findall(pattern, string)

2行目から4行目ではなく、4行目のみを取得するにはどうすればよいですか?

どうもありがとうございました。

4

3 に答える 3

2

おそらく、これを介して:

pattern = re.compile('.*(a.*?c)')
re.findall(pattern, string)  # yields ["abc"]
于 2013-07-10T10:07:40.277 に答える
2
>>> re.findall('a[^a]*c', 'aaaaaaaaabc')
['abc']
>>> re.findall('a[^a]*c', 'aaaaaaaaa c')
['a c']
于 2013-07-10T10:09:58.590 に答える
1

繰り返される文字のすべてのインスタンスを置き換えたい場合は、id または名前付きグループを使用できます。

例:

ID付き:

>>> re.sub('(.)(\\1)+', '\\1', 'abcAAAAabcBBBBabcCCCCabc')
'abcAabcBabcCabc'

名前付き:

>>> re.sub('(?P<n>.)(?P=n)+', '\\1', 'abcAAAAabcBBBBabcCCCCabc')
'abcAabcBabcCabc'
于 2013-07-10T10:20:00.767 に答える