3

123Python 3 正規表現モジュールを使用して次の文字列の一部を取得するにはどうすればよいですか?

....XX (a lot of HTML characters)123

ここで、...Part は、HTML 文字、単語、および数字で構成される長い文字列を表します。

123が特徴ですXX。したがって、またはのXXような任意の文字を使用できる普遍的な方法を誰かが提案できれば、より役に立ちます。AAAB

補足:
Perl の\G演算子を使用して、最初XXに文字列を特定し、次に の後に現れる最初の数字を特定することを考えましたXX。しかし、\G演算子は Python 3 では機能しないようです。

私のコード:

import re
source='abcd XX blah blah 123 more blah blah'
grade=str(input('Which grade?'))
#here the user inputs XX

match=re.search(grade,source)
match=re.search('\G\D+',source)
#Trying to use the \G operator to get the location of last match.Doesn't work.

match=re.search('\G\d+',source)
#Trying to get the next number after XX.
print(match.group())
4

1 に答える 1

1

説明

この正規表現はXX、ユーザー入力に置き換えることができる文字列値と一致します。正規表現では、XX文字列を空白で囲むか、サンプル テキストの先頭に配置する必要がありXXますEXXON

(?<=\s|^)\b(xx)\b\s.*?\s\b(\d+)\b(?=\s|$)

ここに画像の説明を入力

コード例:

適切な Python の例を提供できるほど Python をよく知らないので、正規表現がどのように機能するか、およびキャプチャされたグループを簡単に示すために、PHP の例を含めます。

<?php
$sourcestring="EXXON abcd XX blah blah 123 more blah blah";
preg_match('/(?<=\s|^)\b(xx)\b\s.*?\s\b(\d+)\b(?=\s|$)/im',$sourcestring,$matches);
echo "<pre>".print_r($matches,true);
?>
 
$matches Array:
(
    [0] => XX blah blah 123
    [1] => XX
    [2] => 123
)

実際の文字列位置が必要な場合、PHP では次のようになります。

$position = strpos($sourcestring, $matches[0]) 
于 2013-06-08T15:35:38.440 に答える