REGEX在一系列特殊字符后获取所有内容

时间:2018-12-10 17:41:38

标签: javascript regex

我正在使用此正则表达式正确获取iddescription的值

\$\$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&amp;description=some_description$$ AX Whatever
<input checked="" disabled="" type="checkbox"> $$id=uniq_id$$ AX Whatever

<input disabled="" type="checkbox"> $$id=uniq_id&amp;description=some_description$$ AX Whatever

3 个答案:

答案 0 :(得分:1)

您可以使用

/\$\$id=(\w+)(?:&amp;description=(\w+))?\$\$([^$]*(?:\$(?!\$)[^$]*)*$)?/

请参见regex demo

我在模式的末尾添加了([^$]*(?:\$(?!\$)[^$]*)*$)?,这是一个可选的捕获组匹配

  • [^$]*-除$之外的零个或多个字符
  • (?:\$(?!\$)[^$]*)*-出现零次或多次
    • \$(?!\$)-一个$之后没有另一个$
    • [^$]*-除$之外的零个或多个字符
  • $-字符串的结尾。

答案 1 :(得分:0)

我不确定我是否正确理解了您的问题,但是如果是这样,那么您可以在末尾添加.*。我想您想要这样的东西:

\$\$id=(\w+)(?:&amp;description=(\w+))?\$\$(.*)
                          Here-------------^^^^

这将捕获$$之后的整行,直到找到\n

Working demo

如果要捕获多行,则可以使用:

\$\$id=(\w+)(?:&amp;description=(\w+))?\$\$([^$]*)

Working demo

请注意:如果您的文字中最后一个$$之后有文字$,则此方法将不匹配。如果您还想捕获$,则可以使用Viktor的注释。

答案 2 :(得分:0)

您可以尝试

\$\$id=(\w+)(?:&description=(\w+))?(?:.*)\$\$(.*)
  

说明

  • \$\$id=-匹配$$id=
  • (\w+) =捕获组。匹配一个或多个字符。
  • (?:&description=(\w+))?-匹配description=,后跟一个或多个字符(捕获组)。 (?使其为可选)。
  • (?:.*)非捕获组。匹配零个或多个时间(换行符除外)的所有内容。(贪婪模式)
  • \$\$-匹配最后一个$$
  • (.*)匹配除换行零或时间以外的任何内容。

Demo