私は次の文字列を持っています:
p=1A テスト$A123
「A123」のみを取得するには正規表現が必要です。次のことを考慮してください。
- 「A」は a ~ z の間の任意の文字にすることができます (1 文字以上の場合もあります)。
- 「p=」の後に $ 記号が 1 つだけある
- 「p=」の前に他の「$」記号がある場合があります。
何か案は?
私は次の文字列を持っています:
p=1A テスト$A123
「A123」のみを取得するには正規表現が必要です。次のことを考慮してください。
何か案は?
キャプチャ グループの使用:
Javascript:
'a=3$bcc,p=1A Testing$A123'.match(/p=.*\$(\w+)/)[1]
// => "A123"
パイソン:
>>> import re
>>> re.search(r'p=.*\$(\w+)', r'a=3$bcc,p=1A Testing$A123').group(1)
'A123'
Javasript の使用:
var s = 'p=1A Testing$A123';
var m = s.match(/p=[^$]*$(.*)$/);
// ["p=1A Testing$A123", "A123"]
// use m[1]
これはうまくいくはずです:
/^\p=[^$]*\$[A-Z]\d+$/
正規表現は次のようになります。p=.*\$(\w+[0-9]*)
p= matches the p=
.* matches any character greedily
\$ matches the $
(\w+[0-9]*) matches a capture group: \w+ (a group of least one characters) followed by [0-9]* (a group of numbers (optional))
$ の後の文字の後に少なくとも 1 つの数字が必要な場合は、[0-9]* を [0-9]+ に変更します。
.*?p=[^$]*\$([a-z].*)$
入力の末尾に一致させるために使用するパターンでキャプチャ グループ([a-z].*)
を変更します。
例えば、
([a-z]\d*)
: [aZ] で始まり、その後に 0 回以上の 10 進数のシーケンスが続きます。([a-z]\d{3})
: [aZ] で始まり、その後に 3 回の 10 進数のシーケンスが続きます。