我有以下正则表达式模式,工作正常:
#^(.+?)=(.+?)$#D
但是我想扩展它以支持以下示例输入:
一些文字=更多文字;一些
一些文字=更多文字;某些东西;某种东西
某些文字=更多文字;某事;某事;某事
从上面的示例中可以看出,输入分号(;
)字符用作分隔符,用于分隔文本(它位于文本之间)。
我想我可以使用下面的正则表达式模式 - 只有当theres是一个时它才会起作用,但是如果有更多的文本被分号分隔的话就不会...我知道我可能会添加{ {1}}但我希望验证是严格的,以确保它采用该格式(因此,只有在文本之间的任何位置都不能存在分号)。
[;]*
如果有帮助我当前正在使用PHP的#^(.+?)=(.+?);(.+?)$#D
函数(因此匹配可以preg_match()
形式使用)。
我不仅限于使用正则表达式,因为这是我能想到的唯一方法,因此我欢迎使用其他方法或可以与此一起使用的任何方法(提供结果可以很容易地作为数组获得LOL)。
另外我想在写这篇文章时(以及浏览标记系统)注意到我有一个新闻快讯...也许使用带有array()
递归功能的preg_match_all()
可能是一个可能的解决方案?
感谢所有回复并感谢您的帮助。
答案 0 :(得分:3)
为什么不在后半部分使用explode()
来爆炸任何分号?
答案 1 :(得分:1)
你可以试试这个正则表达式:
#^(.+?)=((.+?)(;)?)+$#D
答案 2 :(得分:0)
尝试:
#^(.+?)=(.+?)(;(.+?))+?$#D
答案 3 :(得分:0)
我会尝试:
#^(.+?)=(.+?)(?:;(.+?))+?$#D