0

私は次の文字列を持っています:

p=1A テスト$A123

「A123」のみを取得するには正規表現が必要です。次のことを考慮してください。

  1. 「A」は a ~ z の間の任意の文字にすることができます (1 文字以上の場合もあります)。
  2. 「p=」の後に $ 記号が 1 つだけある
  3. 「p=」の前に他の「$」記号がある場合があります。

何か案は?

4

5 に答える 5

0

キャプチャ グループの使用:

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'
于 2013-10-16T13:02:06.643 に答える
0

Javasript の使用:

var s = 'p=1A Testing$A123';
var m = s.match(/p=[^$]*$(.*)$/);
// ["p=1A Testing$A123", "A123"]
// use m[1]
于 2013-10-16T13:02:06.963 に答える
0

これはうまくいくはずです:

/^\p=[^$]*\$[A-Z]\d+$/
于 2013-10-16T13:05:59.607 に答える
0

正規表現は次のようになります。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]+ に変更します。

于 2013-10-16T13:08:07.573 に答える
0

.*?p=[^$]*\$([a-z].*)$

入力の末尾に一致させるために使用するパターンでキャプチャ グループ([a-z].*)を変更します。

例えば、

  • ([a-z]\d*): [aZ] で始まり、その後に 0 回以上の 10 進数のシーケンスが続きます。
  • ([a-z]\d{3}): [aZ] で始まり、その後に 3 回の 10 進数のシーケンスが続きます。
  • ...
于 2013-10-16T13:08:13.577 に答える