Notepad++正则表达式将所选句子的第一个单词大写
Notepad++ regex to capitalise the first word of selected sentence
与定制Notepad++有关。我知道 TextFX 'Sentence case.' 存在,但我想用我自己的 regex/macro.
来控制它
测试对象:hello my name is john. hello my name is john. hello my name is john.
目前我有这个,当没有鼠标 selected/highlighted 时,它工作正常。
Find what: ((?<=^|(?<=[.!?]\s)))(\w)
Replace with: \u[=10=]
但是,当我只 select/highlight 第二个(中间)句子(从 h
开始到句点 .
结束)时,正则表达式什么都不做。 注意:我在 N++ 中勾选了 'Use selection',并且正在使用 'Replace All'。
这是有道理的,因为正则表达式正在寻找行的开头或字符模式 .!?
后跟 space.
我的问题是如何更改正则表达式,使其在 selecting/highlighting 任何句子时都能正常工作,无论它是否按照我的示例位于行首。
我尝试添加一个负向后视以在没有找到字符时进行匹配,但我只设法将每个句子的第一个单词大写。
^
匹配行首,而您选择的区域不在行首。您可以将其替换为\A
、start of the matching string。由于它会在每个选定的区域进行匹配,所以不能使用\w
,需要在其后添加+
,以免后面的每个字符都变成大写。
使用
(?<=\A|(?<=[.!?]\s))(\w+)
并替换为 \u[=16=]
.
另一种方法是使用捕获组(然后,您将能够匹配 !
、?
或 .
与下一个单词字符之间的空格数的情况不止一个):
(\A|[.!?]\s+)(\w+)
替换为\u
。
与定制Notepad++有关。我知道 TextFX 'Sentence case.' 存在,但我想用我自己的 regex/macro.
来控制它测试对象:hello my name is john. hello my name is john. hello my name is john.
目前我有这个,当没有鼠标 selected/highlighted 时,它工作正常。
Find what: ((?<=^|(?<=[.!?]\s)))(\w)
Replace with: \u[=10=]
但是,当我只 select/highlight 第二个(中间)句子(从 h
开始到句点 .
结束)时,正则表达式什么都不做。 注意:我在 N++ 中勾选了 'Use selection',并且正在使用 'Replace All'。
这是有道理的,因为正则表达式正在寻找行的开头或字符模式 .!?
后跟 space.
我的问题是如何更改正则表达式,使其在 selecting/highlighting 任何句子时都能正常工作,无论它是否按照我的示例位于行首。
我尝试添加一个负向后视以在没有找到字符时进行匹配,但我只设法将每个句子的第一个单词大写。
^
匹配行首,而您选择的区域不在行首。您可以将其替换为\A
、start of the matching string。由于它会在每个选定的区域进行匹配,所以不能使用\w
,需要在其后添加+
,以免后面的每个字符都变成大写。
使用
(?<=\A|(?<=[.!?]\s))(\w+)
并替换为 \u[=16=]
.
另一种方法是使用捕获组(然后,您将能够匹配 !
、?
或 .
与下一个单词字符之间的空格数的情况不止一个):
(\A|[.!?]\s+)(\w+)
替换为\u
。