我有以下语句{$("#aprilfoolc").val("HoliWed27"); $("#UgadHieXampp").val("ugadicome");}
。我想用组合获取字符串。我写了以下正则表达式,但它不起作用。请帮忙!
(?=[\$("#]?)[\w]*(?<=[")]?)
我有以下语句{$("#aprilfoolc").val("HoliWed27"); $("#UgadHieXampp").val("ugadicome");}
。我想用组合获取字符串。我写了以下正则表达式,但它不起作用。请帮忙!
(?=[\$("#]?)[\w]*(?<=[")]?)
你可以使用这个更简单的:
'{$("#aprilfoolc").val("HoliWed27");}'.match(/\$\(\"#(\w+)\"[^"]*"(\w+)"/)
这返回
["$("#aprilfoolc").val("HoliWed27"", "aprilfoolc", "HoliWed27"]
您想要的字符串位于索引 1 和 2 处。
也可以:
/\("[#]?(.*?)"\)/
import re
s='{$("#aprilfoolc").val("HoliWed27");}'
f = re.findall(r'\("[#]?(.*?)"\)',s)
for m in f:
print m
我不知道为什么,但是如果您想同时捕获两个组,那么:
/\("#(.*?)"\).*?\("(.*?)"\)/
import re
s='{$("#aprilfoolc").val("HoliWed27");}'
f = re.findall(r'\("#(.*?)"\).*?\("(.*?)"\)',s)
for m in f:
print m[0],m[1]
在 JavaScript 中:
var s='{$("#aprilfoolc").val("HoliWed27")';
var re=/\("#(.*?)"\).*?\("(.*?)"\)/;
alert(s.match(re));
这种建设
(?=[\$*"#]?)
将匹配一个前瞻,但只是可选的——字符集后跟一个?
. 这种打败下一部分,
[\w]
仅匹配单词字符。所以前瞻永远不会匹配。类似的,这部分
(?<=[")])
也永远不会匹配,因为从逻辑上讲,永远不会有一个字符"
或)
字符串的末尾\w
只匹配。同样,由于这部分是可选?
的(最后又是),所以它永远不会匹配。
有点不清楚你在追求什么。双引号内的字符串,是的,但在第一个你想跳过散列 - 为什么?鉴于您的输入和所需的输出,这应该可以工作:
\w+(?=")