如何获取特定字符串后的字符串,然后只获取另一个字符串后的字符串?

时间:2013-10-16 12:57:39

标签: regex

我有以下字符串:

p = 1A测试$ A123

我需要正则表达式才能获得“A123”,请考虑以下内容:

  1. “A”可以是a-z(可能超过单个字符)
  2. 之间的任何字符
  3. “p =”
  4. 后只有1个$符号
  5. “p =”之前可以有其他“$”符号。
  6. 任何想法?

5 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

使用Javascript:

答案 2 :(得分:0)

这应该有效:

/^\p=[^$]*\$[A-Z]\d+$/

答案 3 :(得分: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] +。

答案 4 :(得分:0)

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

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

例如,

  • ([a-z]\d*):以[a-Z]开头,后跟一系列小数0次或更多次。
  • ([a-z]\d{3}):以[a-Z]开头,后跟一系列小数正好3次。
  • ...