使用RegEx获取字符串的第二部分

Bit*_*rse 1 regex

我有这样的字符串"first#second",我想知道如何在没有"#"符号的情况下获得"第二"部分作为RegEx的结果,而不是使用括号进行匹配捕获

upd:我忘了在字符串的末尾添加一个特殊字符,真正的字符串是"first#second*"

Cha*_*les 5

简单的正则表达式:

/#(.*)$/
Run Code Online (Sandbox Code Playgroud)

如果您真的不希望它成为匹配捕获,并且您知道字符串中有 # 但您想要的部分没有,您可以这样做

/[^#]*$/
Run Code Online (Sandbox Code Playgroud)

整个正则表达式就是你想要的。


pol*_*nts 5

如果你必须使用正则表达式,并且你坚持不使用捕获组,你可以在支持它们的风格中使用lookbehind,如下所示:

(?<=#).*
Run Code Online (Sandbox Code Playgroud)

或者你也可以捕获任何东西,但是#,到字符串的末尾,所以像这样:

[^#]*$
Run Code Online (Sandbox Code Playgroud)

捕获组选项当然是:

#(.*)
 \__/
   1
Run Code Online (Sandbox Code Playgroud)

这也匹配#,但组1捕获您想要的部分.

最后,非正则表达式可能看起来像这样:

secondPart = wholeString.substring( wholeString.indexOf("#") + 1 )
Run Code Online (Sandbox Code Playgroud)

如果#也可以在字符串中的任何其他位置出现(可能是转义)这些解决方案中的某些问题.

参考