我正在尝试使用regex
和capturing groups
通过普通聊天消息创建一些简单的数据输入。我们的想法是让用户write a lot of things
然后使用scape #
然后name: anything; description: anything 2; complement : anything 3...
这个难题的一些要求和特征:
#
提交对于第一个(用户写下他/她需要什么,直到scape #
)我写了
第一部分,自由文本(FT):([,\w\s():\.\$]*)
对于第二部分,我认为我应该有以下内容:((#(obligatory pair)+);?)*)
是最后一个*
,以确保整个#
序列不是强制性的,但一旦他/她添加#
,必须遵循模式。
所以我最终得到了以下(here in regex101):
([,\w\s():\.\$]*)(?:(?:#(?:(?:\s*(name|description|complement)):([,\w\s():\.\$]+))+;?)*)
并在以下文字中使用(在上面的链接中)
This is is the free text that the user is writing. Now with the scape # name: free text to write; description: another free text and then ; complement : yet another one
现在当然这不会起作用,但不仅仅是因为我知道我会遇到的问题,如果"name"
被使用或不被使用,我无法控制。
问题在于-g
只捕获了第一个字段name
,而+g
description
和complement
显然不属于匹配项模式,因为我可以创建另一个名为completelyWrong
的字段,它将出现在我的捕获中。
我很确定,因为我是正则表达式世界的新手,所以这是一个不稳定的解决方案。任何帮助都非常欢迎。
答案 0 :(得分:1)