【发布时间】:2022-01-09 23:34:01
【问题描述】:
我正在尝试匹配从! 开始的整行文本
使用正则表达式。
我做了这样的事情:/(!\w+\s+\S+)/ig 非常接近,但只有 2 个字。我想将单词匹配到新行。我还看到句子中间的扰流板有问题。
【问题讨论】:
我正在尝试匹配从! 开始的整行文本
使用正则表达式。
我做了这样的事情:/(!\w+\s+\S+)/ig 非常接近,但只有 2 个字。我想将单词匹配到新行。我还看到句子中间的扰流板有问题。
【问题讨论】:
你只需要
^!.*
^ 匹配行的开头(在 Ruby 中),! 将匹配文字 !,.* 将匹配零个或多个字符而不是换行符(如果您使用的是 Ruby,则我假设您使用了 rubular 网站)。
如果您使用 Ruby 以外的正则表达式风格,例如 JS、PHP 或 .NET,则需要指定 /m - MULTILINE - 修饰符(例如 JavaScript 中的 /^!.*/gm)。
【讨论】:
^!.[^<]*
如果要将所有内容都匹配到行尾:
/(!.+)/
如果你想确保它遵循!word---的格式:
/!\w.+/
【讨论】:
如果你想为<br> 添加一个例外,你应该使用一个积极的前瞻运算符。另请注意,使用正则表达式解析 HTML 文档通常不是一件好事。
我认为你也应该考虑<br />。因此,最终的正则表达式将是:
^!.+?(?=\<br\>|\<br\s*\/\>|$)
它将匹配下面示例中突出显示的部分:
!剧透示例
没有剧透
!spoiler
!spoiler with more
词
!spoiler upto new
线
!中间的剧透
【讨论】:
另一种解决方案是。
^!\b.*$
在哪里
^行首
!比赛开始
\b.*$剩下的行直到结束
【讨论】:
【讨论】: