选择所有最多 12 个单词且末尾没有任何标点符号的行

选择所有最多 12 个单词且末尾没有任何标点符号的行

我想要选择所有最多 12 个单词且末尾没有任何标点符号的行。

例子:

Love's Equal On Earth

In a moving "in" and "out of focus" image, what you see is what you want to believe about yourself.

I love the feeling.

I must confess every day for better feeling

REsTsora is a non-profit website of millions of free books, movies, software, music, websites, and more.

输出必须找到:

Love's Equal On Earth
I must confess every day for better feeling

我的正则表达式不太好:

^(.*?)(\w+\s?){1,12}(?!\S|$)

我想避免行末的所有标点符号,即找到那些最多 12 个单词的行,这些行在最后一个单词后没有任何内容,没有标点符号,什么都没有。我的正则表达式在标点符号之前停止了行'

答案1

  • Ctrl+H
  • 找什么:^(?:(?:\w+\W){13}.+|.*[.!?]|)\R
  • 用。。。来代替:LEAVE EMPTY
  • 打钩 环绕
  • 选择 正则表达式
  • 取消勾选 . matches newline
  • Replace all

解释:

^           # beginning of line
    (?:         # non capture group
        (?:         # non capture group
            \w+         # 1 or more word characters
            \W          # non word character
        ){13}       # end group, must appear 13 times
        .+          # 1 or more any character
      |           # OR
        .*          # 0 or more any character
        [.!?]       # a punctuation, you can add all punctuation you want
      |           # OR
                    # EMPTY
    )           # end group
    \R          # any kind of linebreak

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

答案2

^(\S+ ?){1,12}(?<!\.)$

旗帜: gm

  • ^:行首(\S+ ?)=>\S+任何非空格字符,重复 1 到 n 次
  • 后面跟着可选的空格 ?
  • 全部重复1至12次{1,12}
  • (?<!\.)$: $ 行尾没有以 . 开头(可以随意添加更多,例如?,!;

尝试一下这里

有趣的是,你可以在单词之间使用标点符号,它只会检查行末的最后一个标点符号。

答案3

  • Ctrl+H
  • 找什么:^(.*?)(\w+\s){1,12}(\w+)\s*$
  • 用。。。来代替:(Leave EMpty)
  • 查看 环绕
  • 查看 正则表达式
  • 取消选中 . matches newline
  • Replace all

答案4

不确定这是否是最佳的,但请尝试以下操作:

  • 找什么:^(\w+[^\.,\:!\?]){1,12}$
  • 搜索模式:Regular expression

笔记:我只考虑了几个标点符号(.、、和)。,:!?

相关内容