正则表达式 - 最后一个句点和最后一个下划线之间的所有内容

标签 regex

我正在尝试制定一个正则表达式来捕获最后一个句点之后的所有内容,直到(不包括)句点之后的下划线数字 3。

例如:

ABC_Simple_DEF.dbo.GDE_1_1_Contact_test

应该返回 GDE_1_1

我试过使用 [^.]+$,它包括最后一段之后的所有内容。 表达式 _[^_]+$ 包括最后一个下划线和后面的所有内容,这很接近,但不完全是我要找的。

有点卡在这里,不胜感激

最佳答案

你可以使用

[^._]+(?:_[^._]+){2}(?=_[^.]*$)

或者,捕获方法(您需要从结果中获取第 1 组值):

([^._]+(?:_[^._]){2})_[^.]*$

参见 regex demo #1regex demo #2 .

详情

  • [^._]+ - 除了 ._
  • 之外的 1+ 个字符
  • (?:_[^._]+){2} - 两次重复
    • _ - 下划线
    • [^._]+ - 除了 ._
    • 之外的 1+ 个字符
  • (?=_[^.]*$) - 需要 _ 和除 . 以外的 0+ 个字符的正面前瞻紧接在当前位置右侧的字符串末尾。

关于正则表达式 - 最后一个句点和最后一个下划线之间的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56899470/

相关文章:

php - 将 **Foo** 替换为 <strong>Foo</stong> (正则表达式)?

regex - 正则表达式中的运算符优先级

javascript - 打字动画中的奇怪行为

c# - C#正则表达式获取以开头的单词?

java - 在正则表达式中使用 Unicode 类别名称时出现 PatternSyntaxException

java - 正则表达式在方法 replaceAll() 中不起作用 - Android

regex - 如何在 Perl 中提取该文件名的部分内容?

Python正则表达式查找字母数字字母指定的所有组合

java - 简单的 Java 正则表达式不起作用

javascript - 正则表达式在正则表达式测试器中有效,但在模式中无效