【发布时间】:2010-11-11 19:11:59
【问题描述】:
我有以下问题。
让我们输入(wikitext)
======hello((my first program)) world======
我想匹配“hello”、“my first program”和“world”(注意空格)。
但是对于输入:
======hello(my first program)) world======
我想匹配“hello(my first program”和“world”。
换句话说,我想匹配任何字母、空格以及任何单个符号(没有双倍或更多)。
这应该使用诸如 \p{L}、\p{S} 或 \p{Z} 等 unicode 字符属性来完成,如 here 所记录的那样。
有什么想法吗?
附录 1
正则表达式必须在 unicode 术语中的任何双符号或标点符号之前停止,即在任何 \p{S}{2,} 或 \p{P}{2,} 之前。
我不想用这个来解析整个 wikitext,请仔细阅读我的问题。我正在寻找的正则表达式是我正在研究的词法分析器,并且使其与此类输入匹配将难以置信地简化我的解析器。
附录 2
该模式必须与preg_match() 一起使用。我可以想象我将如何首先拆分它。也许它会使用一些前瞻性,我不知道,我已经尝试了我能想象的一切。
仅使用preg_match() 是当前的词法分析器实现的固定要求。一定是这样,因为这是词法分析器工作的自然方式:它们匹配输入流中的序列。
【问题讨论】: