Regex提取字符串后的第二个“"字符串末尾的点字符

Regex extract string after the second "." dot character at the end of a string

本文关键字:字符串 字符 quot 提取 第二个 Regex      更新时间:2023-09-26

我想提取文件名的第二个"文件扩展名",所以:

/Users/path/my-path/super.lol.wtf/main.config.js

我需要的是:

.config.js

如果我得到一个有2个字符串的数组作为回报,那将是多么棒啊:

var output = ['main', '.config.js'];

我尝试过的:

^('d+'.'d+'.)

但这行不通。

感谢

您可以使用以下内容:

([^'/.'s]+)('.[^'/'s]+)$

此处示例

  • ([^'/.'s]+)-一次或多次捕获不包括字符/.以及任何空白字符的组。

  • ('.[^'/'s]+)-类似于上面的表达式;以CCD_ 5字符为开头的捕获组;不包括字符CCD_ 6和CCD_。

  • $-线路末端


或者,您也可以使用以下方法:

(?:.*'/|^)([^'/.'s]+)('.[^'/'s]+)$

此处示例

  • (?:.*'/|^)-与上面的表达式相同,只是这将缩小匹配范围以减少步数。它是一个非捕获组,将匹配行的开头或/字符

第一个表达式较短,但第二个表达式具有更好的性能。

两个表达式都将匹配以下内容:

['main', '.config.js']

在以下各项中:

/Users/path/my-path/some.other.ext/main.config.js
some.other.ext/main.config.js
main.config.js

以下是您需要的:

(?:'/?(?:.*?'/)*)([^.]+)*'.([^.]+'.[^.]+)$
  • CCD_ 11表示检测和忽略
  • [^.]+表示除.之外的任何内容
  • .*?表示通过直到最后一个/

检查此处