正则表达式,如果第一个不匹配,则带有替代

时间:2015-07-22 08:53:22

标签: regex

我需要一个正则表达式,它将函数签名作为输入并返回函数的名称,即我可能有以下输入:

FUNCTION(A,B,C)

并应用以下正则表达式后:

^(.*?)(?=\()

我正确地按预期获得了“功能”一词。

但是,有时候我可以得到函数的名称而没有括号(因此没有参数),如下所示:

FUNCTION

在这种情况下,之前的正则表达式失败并且不采用名称。有没有办法定义一个正则表达式,如果它找不到第一个正则表达式,尝试另一个正则表达式? (在这种情况下,将采取整个输入。)

3 个答案:

答案 0 :(得分:2)

根据我的看法,您希望匹配()和空格以外的第一个 n 字符。

因此,使用

效率更高
^[^()\s]+

请参阅demo

答案 1 :(得分:1)

^(.*?)(?=\(|\s*$|\s)

这应该为你做。你需要使用|或运营商。

\s*$ ===如果你有0个或更多的空格然后字符串结束则停止

\s ====停在第一个空格实例

答案 2 :(得分:0)

^([^)]+)\s*\(?

可以做你想做的事。

说明:

([^(]+):一个或多个不是的字符(

\s*:可能是一些空格

\(?:选项括号