【问题标题】:trying to combine multiple regex patterns尝试组合多个正则表达式模式
【发布时间】:2021-08-23 15:51:40
【问题描述】:

我正在尝试将 2 个正则表达式模式组合成一个,但我无法这样做。 我要解决的问题是获取两个字符之间的字符串,这两个字符可以在一个字符串中出现多次。

string = /users/test/test1/test2/abcde_482_fhsj_38575.txt

我需要在我的结果中得到“abcde”。 当我尝试使用以下正则表达式时,我会在第一个下划线之前获得所有信息

(.*)^[^_]*_

当我尝试使用以下正则表达式时,我得到最后一个“/”之后的所有信息

.*\/(.*)

但我无法将这两种模式结合起来得到“abcde”。我尝试使用“|”作为运营商也可以将它们组合起来,但它没有用。我在这里做错了什么吗?任何正确方向的指针将不胜感激。

【问题讨论】:

  • 尝试使用^[^_]*\/([^\/_]+)进行捕获,参见regex101.com/r/36DWt5/1
  • @WiktorStribiżew,这太棒了,而且效果很好!非常感谢您的帮助!

标签: regex


【解决方案1】:

你可以使用

^[^_]*\/([^\/_]+)

查看regex demo,获取Group 1中的值。

详情

  • ^ - 字符串开头
  • [^_]* - 除_ 之外的任何零个或多个字符,尽可能多
  • \/ - 一个 / 字符
  • ([^\/_]+) - 捕获组 1:除 /_ 之外的任何一个或多个字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多