【发布时间】:2011-10-02 01:53:14
【问题描述】:
我有以下可以正常工作的正则表达式模式:
#^(.+?)=(.+?)$#D
但是我想对其进行扩展,使其支持以下示例输入:
一些文字=一些更多的文字;一些东西
一些文字=更多文字;某事;某事
一些文字=一些更多的文字;某事;某事;某事
从上面的示例输入中可以看出,分号 (;) 字符被用作分隔符,用于分隔文本(它位于文本之间)。
我想我可以在下面使用以下正则表达式模式 - 它仅在有一个时才有效,但如果有更多由分号分隔的文本则不会...我知道我可能可以添加类似 @ 987654323@ 但我希望验证是严格的,以确保它是那种格式(所以分号不能只在文本之间的任何地方)。
#^(.+?)=(.+?);(.+?)$#D
如果有帮助,我目前正在使用 PHP 的 preg_match() 函数(因此可以在 array() 表单中使用匹配项)。
我不限于使用正则表达式,因为这是我能想到的唯一方法,因此我欢迎使用其他方法或任何可以与此一起使用的方法(前提是结果可以很容易地作为数组获得哈哈)。
另外我想指出,在写这篇文章时(并浏览标记系统)我有一个新闻快讯......也许使用 preg_match_all() 和 PCRE 递归功能可能是一个可能的解决方案?
感谢所有回复并感谢您提供的所有帮助。
【问题讨论】:
标签: php regex preg-match pcre preg-match-all