我正在使用这个正则表达式来正确获取id
和description
的值
\$\$id=(\w+)(?:&description=(\w+))?\$\$
示例:https://regex101.com/r/GZVlKf/1
我会修改这个正则表达式并在最后一个$$
之后得到任何文本。我试过像|?<=/$/$).*$
这样的东西但没有成功。你能指点我正确的方向吗?
测试数据:
$$id=uniq_id&description=some_description$$ Any text after
$$id=uniq_id$$ Any text after
$$id=uniq_id&description=some_description$$ Any text after
$$id=uniq_id$$ Any text after
Any text after
$$id=uniq_id&description=some_description$$ Any text after $$ dfjhdjfjkhjj $$
<input disabled="" type="checkbox"> Whatever
<input checked="" disabled="" type="checkbox"> Whatever
<input disabled="" type="checkbox"> $$id=uniq_id&description=some_description$$ AX Whatever
<input checked="" disabled="" type="checkbox"> $$id=uniq_id$$ AX Whatever
<input disabled="" type="checkbox"> $$id=uniq_id&description=some_description$$ AX Whatever
你可以用
/\$\$id=(\w+)(?:&description=(\w+))?\$\$([^$]*(?:\$(?!\$)[^$]*)*$)?/
我在模式的末尾添加了([^$]*(?:\$(?!\$)[^$]*)*$)?
,这是一个可选的捕获组匹配
[^$]*
- 除了$
之外的零个或多个字符(?:\$(?!\$)[^$]*)*
- 零次或多次出现
\$(?!\$)
- 没有跟随另一个$
的$
[^$]*
- 除了$
之外的零个或多个字符$
- 字符串的结尾。我不确定我是否正确理解了您的问题,但如果是这样,那么您可以在最后添加.*
。我想你想要这样的东西:
\$\$id=(\w+)(?:&description=(\w+))?\$\$(.*)
Here-------------^^^^
这将捕获$$之后的整行,直到找到\n
。
如果要捕获多行,则可以使用:
\$\$id=(\w+)(?:&description=(\w+))?\$\$([^$]*)
注意:如果在最后一个$$之后文本中有文字$
,则此方法将不匹配。如果你想捕获$
,那么你可以使用Viktor的评论。
你可以试试这个
\$\$id=(\w+)(?:&description=(\w+))?(?:.*)\$\$(.*)
说明
\$\$id=
- 匹配$$id=
。(\w+)
=捕获组。匹配一个或多个角色。(?:&description=(\w+))?
- 匹配description=
后跟一个或多个角色(捕获组)。 (?使它可选)。(?:.*)
非捕获组。除了换行符之外的任何时间都匹配任何时间。(贪婪模式)\$\$
- 匹配最后一个$$
。(.*)
匹配除换行零或时间之外的任何内容。