我有以下字符串:
p=1A 测试$A123
我需要一个正则表达式才能只获得“A123”,考虑以下几点:
- “A”可以是 az 之间的任何字符(可能不止一个字符)
- “p=”之后只有 1 个 $ 符号
- “p=”之前可以有其他的“$”符号。
有任何想法吗?
我有以下字符串:
p=1A 测试$A123
我需要一个正则表达式才能只获得“A123”,考虑以下几点:
有任何想法吗?
这应该有效:
/^\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))
如果 $ 后面的字符后面应该至少有一位数字,请将 [0-9]* 更改为 [0-9]+。
.*?p=[^$]*\$([a-z].*)$
([a-z].*)
使用要用于匹配输入结尾的模式更改捕获组。
例如,
([a-z]\d*)
: 以 [aZ] 开头,后跟 0 次或更多次的小数序列。([a-z]\d{3})
: 以 [aZ] 开头,后跟一系列小数,正好 3 次。使用捕获组:
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'
使用 Javasript:
var s = 'p=1A Testing$A123';
var m = s.match(/p=[^$]*$(.*)$/);
// ["p=1A Testing$A123", "A123"]
// use m[1]