我想要选择所有最多 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
笔记:我只考虑了几个标点符号(.
、、和)。,
:
!
?