Regular expression to check if two first words are same

前端 未结 4 849
别跟我提以往
别跟我提以往 2021-01-13 04:15

For example:

$s1 = \"Test Test the rest of string\"
$s2 = \"Test the rest of string\"

I would like to match positively $s1 but

相关标签:
4条回答
  • 2021-01-13 04:52

    This does not cause Test Testx to return true.

    $string = "Test Test";
    
    preg_match('/^(\w+)\s+\1(\b|$)/', $string);
    
    0 讨论(0)
  • 2021-01-13 05:00

    Not working everywhere, see the comments...

    ^([^\b]+)\b\1\b
    ^(\B+)\b\1\b
    

    Gets the first word, and matches if the same word is repeated again after a word boundary.

    0 讨论(0)
  • 2021-01-13 05:08
    ~^(\w+)\s+\1(?:\W|$)~
    ~^(\pL+)\s+\1(?:\PL|$)~u // unicode variant
    

    \1 is a back reference to the first capturing group.

    0 讨论(0)
  • 2021-01-13 05:14
    if(preg_match('/^(\w+)\s+\1\b/',$input)) {
      // $input has same first two words.
    }
    

    Explanation:

    ^    : Start anchor
    (    : Start of capturing group
     \w+ : A word
    )    : End of capturing group
    \s+  : One or more whitespace
    \1   : Back reference to the first word
    \b   : Word boundary
    
    0 讨论(0)
提交回复
热议问题