正则表达式忽略字符的前 6 个匹配项

标签 regex

这是我的字符串:/my/name/is/the/following/string/name.lastname/file.txt

我想从这个字符串中提取name.lastname

我试过使用 \/.*\.app,但这会选择: /my/name/is/the/following/string/name.lastname

如何忽略前 6 或 7 个 /

最佳答案

你有很多很好的答案。这是一个使用正向预测 (?=) 的方法,以字符串 $ 结尾。

([^\/]+)(?=\/[^\/]+$)

这里的好处是您可以在最后一个文件夹之前拥有尽可能多的文件夹,并且它仍然可以工作。

DEMO

如果我们把它分解,你有一个

  • 捕获组:([^\/]+),和一个
  • 积极向前看(?=\/[^\/]+$).

捕获组将匹配所有内容除了 ^正斜杠/,一次到多次+。这实际上会捕获正斜杠之间的每个字符串,这就是我们使用正向预测的原因。

积极向前看的最大因素是它会查找字符串 $ 的结尾(由美元符号表示)。它将在正斜杠 / 之后查找所有内容(因此是 (?=\/ 部分),然后它将确保不存在其他正斜杠但匹配所有其他字符 [^\/] 一到无限次 + 到字符串 $ 的结尾。

关于正则表达式忽略字符的前 6 个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49623243/

相关文章:

javascript - 为匹配/不匹配的正则表达式返回 true/false

java - 按标点符号和特殊情况(如 :) or space)拆分文本

python - 如果数字长度为 5 位或更长,则在 python 中中断字符串

c# - 替换字符串中第 N 个正则表达式匹配项

regex - 标签后首字母大写

sql - 如何在oracle 10g中根据居住地址获得排序结果?

javascript - 修改 javascript 正则表达式的组匹配输出

html - 提取所有 html 图像标签,Rails

python - 将文本列拆分为 Pandas 数据框中的列表列,没有明确的拆分序列

javascript - 使用正则表达式验证日期