0

我有以下字符串:

p=1A 测试$A123

我需要一个正则表达式才能只获得“A123”,考虑以下几点:

  1. “A”可以是 az 之间的任何字符(可能不止一个字符)
  2. “p=”之后只有 1 个 $ 符号
  3. “p=”之前可以有其他的“$”符号。

有任何想法吗?

4

5 回答 5

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))

如果 $ 后面的字符后面应该至少有一位数字,请将 [0-9]* 更改为 [0-9]+。

于 2013-10-16T13:08:07.573 回答
0

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

([a-z].*)使用要用于匹配输入结尾的模式更改捕获组。

例如,

  • ([a-z]\d*): 以 [aZ] 开头,后跟 0 次或更多次的小数序列​​。
  • ([a-z]\d{3}): 以 [aZ] 开头,后跟一系列小数,正好 3 次。
  • ...
于 2013-10-16T13:08:13.577 回答
0

使用捕获组:

Javascript:

'a=3$bcc,p=1A Testing$A123'.match(/p=.*\$(\w+)/)[1]
// => "A123"

Python:

>>> 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 回答