正则表达式检查新行

Car*_*ham 5 php regex

我想检查if语句是在一行还是下一行没有括号如下:

if (blah === blah)
    do something
Run Code Online (Sandbox Code Playgroud)

要么:

if (foo === foo) do something
Run Code Online (Sandbox Code Playgroud)

我目前的正则表达式是

/\)(?!.*\{)/
Run Code Online (Sandbox Code Playgroud)

但不起作用.有人有主意吗?

要详细说明此正则表达式不会提取的唯一If语句如下:

if (foo === bar)
{
Run Code Online (Sandbox Code Playgroud)

Mih*_*rga 7

简单 \r \n(回车和换行)

/[\r\n]/
Run Code Online (Sandbox Code Playgroud)

  • 为什么这需要不区分大小写? (2认同)

kin*_*rey 6

新行可能是\n(UNIX)、\r\n(Windows)、\r(为了更好的衡量)。广泛匹配新行的表达式是:

/\r\n|\r|\n/
Run Code Online (Sandbox Code Playgroud)

要检查表达式是否在一行上,您可以执行以下操作:

if( preg_match( '/\r\n|\r|\n/', $string ) ) {
    // on more than one line
    ...
} else {
   // on one line
   ...
}
Run Code Online (Sandbox Code Playgroud)

要进一步发展它以适用于您的特定if ... do语句示例,您可以执行以下操作:

if( preg_match( '/if *\([^\)]+\) *(\r\n|\r|\n) *do /', $string ) ) {
    // on more than one line
    ...
} elseif( preg_match( '/if *\([^\)]+\) *do /', $string ) ) {
   // on one line
   ...
}
Run Code Online (Sandbox Code Playgroud)