正则表达式PHP匹配字符仅在前面或后面跟有相同字符时才匹配。

时间:2015-11-30 11:17:51

标签: php regex

所以我试图匹配后面的勾选`,但只有当它不超过一行时才会匹配:

`test` // matches
``test`` // does NOT match

// does NOT match
```java
    test
```

但是如果它位于字符串或结尾的开头,它也需要匹配,所以这三个必须匹配。

  

`matches`

     

文字`匹配`

     

文字`匹配'EOL

1 个答案:

答案 0 :(得分:1)

更新3

下面的正则表达式与前一个正则表达式完全匹配,但是使用反引号`,避免在正则表达式引擎搜索下一个时,结束反引号被视为起始反引号。

(?<!`)`([^`\n\r]+)`(?!`)

使用捕获组`([^`\n\r]+)`保持正确的行为(仅提取包含在单个反引号中的文本)。

将其与preg_match_all一起使用,试试online php demo

勒亘:

  • (?<!`)`一个反引号不在另一个之前
  • `([^`\n\r]+)`一个匹配所有不是反引号或换行符(CR或LF)的捕获组
  • `(?!`)一个反引号后面没有另一个

Updated Online Demo