Regex 找到猫王?:

Regex 找到猫王?:,regex,Regex,我的任务是找到埃尔维斯(使用eclipse搜索)。有没有什么正则表达式可以帮我找到他 “Elvis运算符”(?:)是Java三元运算符的缩写 我尝试了\?[\s\s]*[:],但它不匹配多行。 有没有这样的重构,我可以把Elvis变成if-else块 编辑 很抱歉,我已经发布了三元运算符的正则表达式,如果您的问题是多行,您可以使用: \?(\p{Z}|\r\n|\n)*: 如果要跨多行匹配,则需要显式匹配行分隔符\在Eclipse3.4中,R将匹配其中任何一个(独立于平台),或者您可以为您的文件

我的任务是找到埃尔维斯(使用eclipse搜索)。有没有什么正则表达式可以帮我找到他

“Elvis运算符”(
?:
)是Java三元运算符的缩写

我尝试了
\?[\s\s]*[:]
,但它不匹配多行。
有没有这样的重构,我可以把Elvis变成if-else块

编辑 很抱歉,我已经发布了三元运算符的正则表达式,如果您的问题是多行,您可以使用:

\?(\p{Z}|\r\n|\n)*:

如果要跨多行匹配,则需要显式匹配行分隔符\在Eclipse3.4中,R将匹配其中任何一个(独立于平台),或者您可以为您的文件使用合适的(\R\n\R\n)。例如,如果只有一个换行符,
\?*\R**:
将起作用。但是,不能在字符类中使用\R,因此如果不知道运算符可能跨越多少行,则必须使用行分隔符和操作数中可能出现的任何字符来构造字符类。类似于
([-\r\n\w\s\[\](){}=!/%*+&^^^“']*)\([-\r\n\w\s\[\](){}=!/%*+&^^^.']*):([-\r\n\w\s\[\](){}=!/%*+&^^代码>。我已经包含了括号来捕获操作数作为组,以便您可以查找和替换

但是,如果这是Java(可能还有其他任何语言),您会遇到一个相当大的问题。三元条件?:运算符创建一个表达式,而if语句不是表达式。请考虑:

boolean even = true;
int foo = even ? 2 : 3;
int bar = if (even) 2 else 3;
第三行在语法上不正确;这两个条件构造并不等价。(如果使用my regex查找和替换,第二行实际得到的是
if(int foo=偶数)2 else 3;
,这还有其他问题。)


因此,您可以找到带有上述正则表达式的?:运算符(或类似的东西;我可能遗漏了一些需要包含在类中的字符),但您不一定能够用“if”语句替换它们。

这是Groovy中的吗?如果是,如果您这样说,那将非常有帮助。(这确实是Java中的条件运算符,顺便说一句-“三元”只是描述它有多少个操作数。它是一个三元运算符,目前是唯一的一个,但它的名称是条件运算符。)Jon Skeet是Elvis。查看Groovy引用,它将二元运算符的值:?值'称为Elvis运算符,将三元运算符的值:?值:'称为传统三元运算符“。你说的是Elvis运算符,还是条件运算符?如果是Elvis运算符,您可以搜索“?:”您要用什么语言查找该运算符?糟糕,我是指传统的三元运算符。String hello=“我不是‘Elvis运算符’?您:确定,不确定”<代码>整数foo=偶数?2 : 3;需要重构为
if(偶数){int foo=2;}else{int foo=3;}