当前位置: 首页 > 知识库问答 >
问题:

如何仅在单行上匹配正则表达式模式?

云景焕
2023-03-14

我有以下正则表达式和示例输入:

http://regex101.com/r/xK9dE3

正如你所看到的,它与第一个“哟”相匹配。我只希望图案和“砍我”在同一行(第二个“哟”)图案上匹配。

如何确保正则表达式匹配只在同一行上?

输出:

Hi

预期输出(这是我真正想要的):

Hi

yo keep this here

Keep this here

共有2个答案

鲜于谦
2023-03-14

删除sDOTALL标志,并将正则表达式更改为以下内容:

^.*?((\yo\b.*?(cut me:)[\s\S]*))

启用了DOTALL标志将匹配换行符,因此您的匹配可以跨越多行,包括yo之前或yocut me之间的行。通过删除此标志,您可以确保仅将行与yocut me匹配,然后更改*位于[\s\s]*的末尾,它将匹配包括换行符在内的任何字符,以便您可以匹配字符串的结尾。

http://regex101.com/r/sX2kL0

编辑:请注意,这与其他答案的方法略有不同,这将匹配您想要删除的字符串部分,因此您可以用空字符串替换该部分以删除它。

尉迟正平
2023-03-14

您可以使用这个正则表达式与s(DOTALL)正则表达式标志:

^.*?(?=yo\b[^\n]*cut me:)

yo\b[^\n]*cut me:是一种前视模式,确保具有单词边界的yocut me:在同一行中匹配。

 类似资料:
  • 我们得到了一些这样的内容:

  • 问题内容: 这个正则表达式模式: 产生以下结果: 如何删除“ cID =“? 谢谢 问题答案: 您可以使用lookbehind(不在Javascript中): 或者,您可以使用分组并获取第一个分组:

  • 问题内容: 我正在制作一个键值解析器,其中输入字符串采用的形式。键可以包含字符,并且和值可以包含任何字符,但,,和需要用反斜杠前缀。逗号用于分隔键值对,但在最后一对之后不需要。 到目前为止,我已经可以匹配大多数键和值,但是很显然它将不能处理多于一对的字符或者任何“控制”字符都不能转义。似乎匹配所有转义字符,但不匹配任何“正常”字符。 有没有办法检查逗号分隔并匹配所有转义的“控制”字符以及普通字符?

  • 有没有一种方法可以在python中编写与以下格式的字符串匹配的正则表达式: 或 在这里,$=表示零或更多的空白可以存在 :来自字符串的固定子集的字符串['feat','fix','docs','断'] :最大长度为n的字符串 :最大长度为m的字符串 前缀应该始终是一个字符串,之后是一些最大q长度的字母数字字符 注意:我们不能省略像应该使用与下面示例中所示完全相同的格式: feat(feat new

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 原始数据是: 我想匹配一条线,但是不能使用 但是,我可以使用match 。 我该如何搭配 问题答案: 默认情况下,和分别匹配输入的开始和结束。您需要使用启用多行模式,这会导致并匹配行的开始和结束: 演示: 产生以下输出: 编辑我 没有任何匹配的事实是因为默认情况下,和不匹配。如果您通过启用了DOT-ALL ,也使匹配了它们,那么您将看到整个输入字符串都被匹配了: 编辑二 在这种情况下,