Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何根据模式从文本体中提取项目?_Regex - Fatal编程技术网

Regex 如何根据模式从文本体中提取项目?

Regex 如何根据模式从文本体中提取项目?,regex,Regex,我正试图想出一种聪明的方法,从文本正文中提取几个项目,而不必编写一个抓住每个部分的大循环。如果这是最好的方法,我并不反对循环,但我想知道像regex之类的东西是否能帮我解决这个问题。假设我有一个正文,如下所示 FOO (1.5) This is a description relating to FOO. BAR (2) Here's another description (not about FOO this time). BAZ (100) 我需要从中提取3项 在帕伦斯之前的标题部分 p

我正试图想出一种聪明的方法,从文本正文中提取几个项目,而不必编写一个抓住每个部分的大循环。如果这是最好的方法,我并不反对循环,但我想知道像regex之类的东西是否能帮我解决这个问题。假设我有一个正文,如下所示

FOO (1.5) This is a description relating to FOO.
BAR (2) Here's another description (not about FOO this time).
BAZ (100)
我需要从中提取3项

  • 在帕伦斯之前的标题部分
  • parens中的数字
  • 如有提供,则为附件后面的说明

  • regex可以用来可靠地提取这些信息位吗?还是只编写一个提取它们的循环更灵活?

    您可以在这里使用3个匹配组:

    ^(\S+)\s+\(([^)]+)\)\s*(.*)$
    

    如果要在该示例中添加第四行文本,我认为当前正则表达式将其视为前一行描述组的一部分。因此,也许我可以将这个正则表达式模式应用于每一行,而不是整个主体。只要您使用
    m
    (多行)修饰符,您就可以任意使用它。它确实启用了多行。查看这个正则表达式演示,了解我的意思: