Notepad ++正则表达式用于大写所选句子的第一个单词

时间:2017-02-13 12:13:02

标签: regex notepad++ regex-lookarounds

与自定义Notepad ++有关。我知道TextFX'句子案例。'存在,但我想用我自己的正则表达式/宏来控制它。

针对hello my name is john. hello my name is john. hello my name is john.

进行测试

目前我有这个功能,当用鼠标选择/突出显示任何内容时,它可以正常工作。

Find what:    ((?<=^|(?<=[.!?]\s)))(\w)
Replace with: \u$0

但是,当我选择/突出显示第二个(中间)句子时(从h开始并在句点.上结束),正则表达式什么都不做。 注意:我已经使用了选择&#39;用N ++打勾并使用&#39;全部替换&#39;

这是有道理的,因为正则表达式正在寻找一个行的开头或char模式.!?后跟一个空格。

我的问题是如何更改正则表达式,以便在选择/突出显示任何句子时起作用,无论它是否在行的开头都不是根据我的例子。

我尝试添加一个负面的lookbehind来匹配没有找到任何字符但是我只设法将每个句子的第一个单词大写。

1 个答案:

答案 0 :(得分:2)

^匹配行的开头,而您选择的区域不在行开头。您可以将其替换为\A start of the matching string。由于它将在每个选定的区域匹配,因此您无法使用\w,因此需要在其后添加+,以便不将每个后续字词char转换为大写字母。

使用

(?<=\A|(?<=[.!?]\s))(\w+)

并替换为\u$0

enter image description here

替代方法是使用捕获组(然后,您将能够匹配!?.与下一个字符char之间的空格数量更多的情况而不是一个):

(\A|[.!?]\s+)(\w+)

替换为$1\u$2