首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/*和*/之间的正则表达式用于preg-match

/*和*/之间的正则表达式用于preg-match
EN

Stack Overflow用户
提问于 2010-08-14 19:47:24
回答 6查看 2.2K关注 0票数 2

我正在尝试提取位于字符串/*和*/之间的字符串中的所有子字符串。我知道这可能需要使用正则表达式来完成,但是我很难获得正确的正则表达式,因为星号字符实际上是用来表示重复字符的。我正在尝试在PHP中使用preg-match方法,这是我到目前为止想出的方法,但我没有太多的运气。

代码语言:javascript
复制
<?php
   $aString = "abcdef/*ghij*/klmn/*opqrs*/tuvwxyz";
   preg_match("/*/.*/", $aString, $anArray);

   for ($i = 0; $i < count($anArray); i++)
      echo $anArray[i] . "\n";
?>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-08-14 19:52:57

工作代码:

代码语言:javascript
复制
 $aString = "abcdef/*ghij*/klmn/*opqrs*/tuvwxyz";

 // SIMPLE VERSION WHERE ASTERISK MAY NOT BE IN THE COMMENT
 // \/\* is just escape sequence for /*  
 // [^\*]* - in comment may be whatever except * (asterisk)
 // \*\/ is escape sequence for */
 preg_match_all("#\/\*[^\*]*\*\/#", $aString, $anArray);

 // BETTER VERSION 
 // http://www.regular-expressions.info/refadv.html - for explanation of ?: and ?!  
 preg_match_all("#\/\*" . "((?:(?!\*\/).)*)" . "\*\/#", $aString, $anArray);


 var_dump($anArray); // easier for debugging than for-loop

更好版本的输出:

代码语言:javascript
复制
array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(8) "/*ghij*/"
    [1]=>
    string(9) "/*opqrs*/"
  }
  [1]=>
  array(2) {
    [0]=>
    string(4) "ghij"
    [1]=>
    string(5) "opqrs"
  }
}
票数 0
EN

Stack Overflow用户

发布于 2010-08-14 19:59:41

要从PHP代码中提取注释节,可以使用Tokenizer

token_get_all()将解析代码,并返回一个元素数组。

注释将表示为T_COMMENT元素。

这有一个很大的好处,那就是捕获PHP代码中所有可能的注释方式:

代码语言:javascript
复制
/* This way, */

// This way

# and this way
票数 1
EN

Stack Overflow用户

发布于 2010-08-14 19:51:47

转义*以使用它,并使用ad括号捕获类似于/\*(.*)\*/的内容,并且应该使用preg_match_all来查找字符串中的所有匹配项。

(而且比使用var_dump($anArray)更容易)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3483119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档