0

ループしている文字列のリストがあります。私は次の正規表現を持っています (アイテムは、特定の瞬間にループしている文字列です):

regularexpression = re.compile(r'set(\d+)e', re.IGNORECASE)
number = re.search(regularexpression,item).group(1)

私がやりたいことは、単語が前に設定され、文字が e の後にある数字を返すことです。

ただし、それらの前に設定された数値とそれらの後に設定された x を返すことも必要です。次のコードを使用する場合:

regularexpression = re.compile(r'set(\d+)(e|x)', re.IGNORECASE)
number = re.search(regularexpression,item).group(1)

数値だけを返す代わりに、e または x も返します。括弧内のすべてを返すことなく、括弧を使用して正規表現をビットにグループ化する方法はありますか?

4

2 に答える 2

3

あなたのサンプルコードはすでに問題ないようですが、質問に答えるために、次の構文を使用して非キャプチャグループを作成できます。(?:)

set(\d+)(?:e|x)

さらに、この特定の例では、文字クラスを使用できます。

set(\d+)[ex]
于 2013-08-06T21:44:38.870 に答える
3

あなたはただ以上のものを見ているようです.group(1)。正規表現で定義された 2 つのキャプチャ グループがあります。

(?:...)の代わりに使用して、2 番目のグループをキャプチャしないようにすることができます(...)

regularexpression = re.compile(r'set(\d+)(?:e|x)', re.IGNORECASE)
于 2013-08-06T21:44:54.497 に答える