我总是很难用正则表达式.. 我正在尝试选择之间的文本(考虑之前和之后的帐户)
'window.API=' and ';' //for window.API= '--API--';
和其他情况如:
'window.img_cdn=' and ';' //for window.img_cdn= '--imgCDN--';
我应该使用的关于女巫正则表达式概念的任何提示都会有很大的帮助!
答案 0 :(得分:0)
如果要捕获'xx'之间的内容,可以使用这样的正则表达式:
'(.*?)'
<强> working demo 强>
示例文字:
window.API= '--API--';
window.img_cdn= '--imgCDN--';
您将捕获:
MATCH 1
1. [13-20] `--API--`
MATCH 2
1. [40-50] `--imgCDN--`
您可以使用的JavaScript代码是:
var re = /'(.*?)'/g;
var str = 'window.API= \'--API--\';\nwindow.img_cdn= \'--imgCDN--\';';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
另一方面,如果您特别想要仅捕获那些条目的内容,那么您可以使用此正则表达式:
window\.(?:API|img_cdn).*?'(.*?)'
答案 1 :(得分:0)
如果您想匹配<some string>=
符号和分号之间的任何文字,请转到:
(?:[\w\.]+\s*=\s')(.+)(?:';)$
如果字符串中存在转义撇号,则此正则表达式模式将匹配完整字符串://for window.img_cdn = '--imgCDN and \'semicolon\'--';
JavaScript代码:
var re = /(?:[\w\.]+\s*=\s')(.+)(?:';)$/gm;
var str = '//for window.img_cdn= \'--imgCDN--\';\n//for window.img_cdn = \'--imgCDN and semicolon = ;;;--\';';
var m;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// view results
}
所需文字位于第一个捕获的组中。如果您要查找的文本中有分号,由于$
锚点,您将正确匹配它。
请参阅demo here