【问题标题】:Match all words that not start with specific alphabets( or sign ) in PHP Regex匹配 PHP Regex 中所有不以特定字母(或符号)开头的单词
【发布时间】:2022-01-17 13:35:35
【问题描述】:

我有一个字符串要与 php 正则表达式匹配。

$string = "~word1 ~word2 ~word3 word4";

我想匹配所有不以 ~ 符号开头的单词。在 php 中我已经尝试过了,但不起作用

preg_match("/(?!~)(?<words>[a-zA-Z0-9\.\_])/i", $string, $matches);
var_dump($matches);

但它不起作用。

【问题讨论】:

  • 试试:/(?&lt;!~)\b\w[\w.-]*/

标签: php regex


【解决方案1】:

为此,您可以使用此正则表达式进行否定的后视:

~(?<!~)\b\w[\w.-]*~

RegEx Demo

正则表达式详细信息:

  • (?&lt;!~):如果~ 位于前一个位置,则负向查找失败
  • \b:字边界
  • \w:匹配一个单词字符
  • [\w.-]*:匹配0个或多个单词字符或.-

【讨论】:

    【解决方案2】:

    您可以在左边设置一个空白边界,并且只匹配字符类中允许的字符。

    请注意,您必须重复字符类,否则您将匹配单个字符。

    (?<!\S)(?<words>[a-zA-Z0-9._]+)
    

    Regex demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 2021-02-19
      • 2021-02-10
      相关资源
      最近更新 更多