检测字符串开头的白色 space 或方括号以及 php 中字符串的特定子字符串

Detect white space or brackets at starting of string and particular substring from string in php

我想从主字符串中检测子字符串的出现,但子字符串可以从 space 或(开头的左括号或结尾的右括号)或。末尾的点

我想写一个正则表达式来检测所有 4 个条件并计算 php 中的出现次数 编辑 - 感谢 JE SUIS,我可以检查开始和结束条件,但它仅在 $mainspring = "php" 时有效,这不适用于“这是 php”。 它不会忽略 php.

之前的单词

有什么办法可以忽略所有匹配前和匹配后的字符串吗?

    $mainString = "i love java but i want to learn php and this keyword ofphp should not be count because there is no space before php but this could be count (php)";
    $keyword = "php";
    $match =preg_match('/^[(\s]?'.$keywords.'[.)]?$/', $mainString);
    var_dump($match);

我不知道如何为这种情况编写正则表达式 任何帮助将不胜感激

谢谢

这将完成工作:

preg_match('/^[(\s]$keyword[.)]$/', $mainString, $match);

其中:

/           : regex delimiter
  ^         : begin of string
  [(\s]     : an open parenthesis or a space
  $keyword  : the keyword to find
  [.)]      : a dot or a close parenthesis
  $         : end of string
/           : regex delimiter

注意preg_match的结果是布尔值,匹配在第三个参数中。

根据评论编辑:

如果要匹配字符串中间的$keyword,只需去掉锚点^$:

preg_match('/[(\s]$keyword[.)]/', $mainString, $match);

如果前后有一些十六进制字符:

preg_match('/[0-9a-fA-F][(\s]$keyword[.)][0-9a-fA-F]/', $mainString, $match);

如果它们不是强制性的:

preg_match('/[0-9a-fA-F]?[(\s]$keyword[.)][0-9a-fA-F]?/', $mainString, $match);