在双引号或单引号之间匹配文本

詹卡尔·马布卜(Jhankar Mahbub)

我需要一些正则表达式帮助。这最后几个小时我一直在head头。我需要在缩小文件中匹配一些字符串。

示例字符串:

var a ='abc'; var b = 'http://a/that.dude.js/v1/'; var c = 'def'; var d = 'https://b/that.dude.js/v1/';
var basePath = "http://othersite/that.dude.js/v1/";

我想匹配包含的单引号或双引号内的全文that.dude.js/v1我试过了:

/('|").+that.dude.js\/v1\/('|")/g

...但是当同一行中有多个匹配项时,这与整行匹配。

我预期的比赛将是:

http://a/that.dude.js/v1/
https://b/that.dude.js/v1/
http://othersite/that.dude.js/v1/

这是我尝试过的:http : //regexr.com/3cv62

维克多·史翠比维

如果在双引号字符串内有单引号,则需要捕获引号定界符并使用后向引用来完全匹配相同的尾随定界符:

(['"])([^"'\s]*that\.dude\.js\/v1[^"'\s]*)\1

请参阅regex演示

由于您具有网址,因此可以安全地将其与[^"'\s]*(和"'以及空格以外的一个或多个符号)进行匹配正则表达式匹配:

  • (['"]) -前导引号定界符(捕获到组1中,以便我们可以匹配相同的尾随定界符)
  • ([^"'\s]*that\.dude\.js\/v1[^"'\s]*) -第2组匹配
    • [^"'\s]*-比其他0+符号"'和空白
    • that\.dude\.js\/v1 -- that.dude.js/v1
    • [^"'\s]* -同上
  • \1 -后导定界符与前导定界符相同

结果将在第2组中:

var re = /(['"])([^"'\s]*that\.dude\.js\/v1[^"'\s]*)\1/g; 
var str = 'var a =\'abc\'; var b = \'http://a/that.dude.js/v1/\'; var c = \'def\'; var d = \'https://b/that.dude.js/v1/\';\nvar basePath = "http://othersite/that.dude.js/v1/";';
var res = [];
 
while ((m = re.exec(str)) !== null) {
  res.push(m[2]);
}
document.body.innerHTML = "<pre>" + JSON.stringify(res, 0, 4) + "</pre>";

请注意,要使其更加通用,可以使用经过调节的贪婪令牌

(['"])((?:(?!\1).)*that\.dude\.js\/v1(?:(?!\1).)*)\1
       ^^^^^^^^^^^^                  ^^^^^^^^^^^^  

观看另一个演示

(?:(?!\1).)令牌将匹配不等于值由称为任何字符(多个),但换行\1反向引用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

php-提取括号,单引号和双引号之间的文本

来自分类Dev

双引号之间的JavaScript文本

来自分类Dev

双引号之间的JavaScript文本

来自分类Dev

PHP单引号与双引号

来自分类Dev

单引号比双引号更快?

来自分类Dev

如何使用后缀匹配单引号或双引号?

来自分类Dev

bash:通过grep匹配单引号和双引号

来自分类Dev

bash:通过grep匹配单引号和双引号

来自分类Dev

bash:通过grep匹配单引号和双引号

来自分类Dev

单引号和双引号的文字之间的Yacc /野牛区别

来自分类Dev

使用__repr __()了解双引号和单引号之间的区别

来自分类Dev

使用PHP在单引号和双引号之间查找内容

来自分类Dev

获取单引号或双引号之间的字符串

来自分类Dev

Python模式替换单引号或双引号之间的单词

来自分类Dev

单引号和双引号的文字之间的Yacc /野牛区别

来自分类Dev

C中单引号和双引号之间的差异

来自分类Dev

如何获得单引号或双引号之间的值?

来自分类Dev

在MATLAB中提取单引号之间的文本

来自分类Dev

命令行上双引号“”,单引号''和反引号``之间的区别?

来自分类Dev

在单引号内的双引号中转义单引号

来自分类Dev

groovy用单引号和双引号替换双引号

来自分类Dev

循环使用双引号,但忽略单引号中的双引号

来自分类Dev

groovy用单引号和双引号替换双引号

来自分类Dev

Haskell中的单引号与双引号

来自分类Dev

grep双引号vs单引号

来自分类Dev

awk单引号或双引号用法

来自分类Dev

psycopg,双引号和单引号插入

来自分类Dev

在单引号内转义双引号

来自分类Dev

单引号和双引号,如何安排?