【发布时间】:2019-10-28 22:08:34
【问题描述】:
我想在 Ruby 中使用正向前瞻 (?=) 时排除多个项目。
所以我们可以匹配换行符 (\n) 后跟除换行符和 block-level elements 之外的任何内容,假设我们要匹配 em 和 strong,但不匹配 ul 和 li 例如:
\nJuanito
\n<ul>\n <li>List
\n </li>
\n <em>
\n <strong>\n Fatas!
我目前有(Rubular 需要 \\n 才能获得 \n):
\\n(?=[^\\n])
这将匹配所有换行符,如下所示:
\nJuanito\n<ul>\n <li\n </li>\n <em>\n <strong>\n Fatas!
但我只想:
-
\n在\nJuanito -
\n在\n <em> -
\n在\n <strong> -
\n在\n Fatas
无法弄清楚如何添加我想要排除的事物列表,同时排除换行符。
也对不使用正向前瞻的解决方案感兴趣。
谢谢。
【问题讨论】:
-
为什么不
\\n(?!\\n)?此外,如果\n之后必须有任何字符,则只需使用\\n(?!\\n).。或\\n(?=(?!\\n).) -
啊,是的,谢谢。但是我需要确保匹配的换行符后面没有块级元素,所以我可以做点什么。
-
\\n(?!\s*<\/?li)?见regex101.com/r/VOnXIw/1。此外,你确定你有"\\n"s 而不是"\n"s?