【问题标题】:PHP regular expression space or newline before or afterPHP 正则表达式空格或换行符之前或之后
【发布时间】:2014-09-16 10:32:48
【问题描述】:

我需要在几行伪代码中检测开始和结束的位置。

基本上,如果单词“start”或单词“end”前后有空格或换行符,我需要记录匹配。

空格/换行识别很重要,因为 start 或 end 可能是出现在 start 和 end 之间的内容的一部分,即

开始 开始时间 = 2 结束时间 = 5 结尾

目前尝试过

preg_match('/((\s)|( *)(start)(\s)|( *))|((\s)|( *)(end)(\s)|( *))/i',
$line, $matches, PREG_OFFSET_CAPTURE);

...和变体。

【问题讨论】:

  • 输入和预期输出是什么
  • PREG_OFFSET_CAPTURE 允许我获取匹配的位置,因此在具有许多开始和结束块的大文件中,我可以获取位置而无需存储块...输入文件,输出数组(开始,0)数组(结束,32)

标签: php regex newline space


【解决方案1】:

您可以使用此正则表达式来捕获此块:

(?<= |\A)start(?=\s)[\s\S]*(?<=\s)end(?=\s|\z)

RegEx Demo

【讨论】:

  • 非常适合捕获块。如果我找不到捕获索引的方法,这是一个解决方案
  • 我不明白你所说的way of capturing the indexes是什么意思。
  • 将文件加载到字符串中,然后捕获start的s字符和end的e字符的索引位置,即每个单词的开头。这样我就可以跳转到那个位置,而不必完全解析内容。谢谢
  • 好的,那么 PREG_OFFSET_CAPTURE 会像您之前评论的那样对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
相关资源
最近更新 更多