我正在使用此正则表达式正确获取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
答案 0 :(得分:1)
您可以使用
/\$\$id=(\w+)(?:&description=(\w+))?\$\$([^$]*(?:\$(?!\$)[^$]*)*$)?/
请参见regex demo。
我在模式的末尾添加了([^$]*(?:\$(?!\$)[^$]*)*$)?
,这是一个可选的捕获组匹配
[^$]*
-除$
之外的零个或多个字符(?:\$(?!\$)[^$]*)*
-出现零次或多次
\$(?!\$)
-一个$
之后没有另一个$
[^$]*
-除$
之外的零个或多个字符$
-字符串的结尾。答案 1 :(得分:0)
我不确定我是否正确理解了您的问题,但是如果是这样,那么您可以在末尾添加.*
。我想您想要这样的东西:
\$\$id=(\w+)(?:&description=(\w+))?\$\$(.*)
Here-------------^^^^
这将捕获$$之后的整行,直到找到\n
。
如果要捕获多行,则可以使用:
\$\$id=(\w+)(?:&description=(\w+))?\$\$([^$]*)
请注意:如果您的文字中最后一个$$之后有文字$
,则此方法将不匹配。如果您还想捕获$
,则可以使用Viktor的注释。
答案 2 :(得分:0)
您可以尝试
\$\$id=(\w+)(?:&description=(\w+))?(?:.*)\$\$(.*)
说明
\$\$id=
-匹配$$id=
。(\w+)
=捕获组。匹配一个或多个字符。(?:&description=(\w+))?
-匹配description=
,后跟一个或多个字符(捕获组)。 (?使其为可选)。(?:.*)
非捕获组。匹配零个或多个时间(换行符除外)的所有内容。(贪婪模式)\$\$
-匹配最后一个$$
。(.*)
匹配除换行零或时间以外的任何内容。