9

例如,有很多这样的行:“术语 - 定义”。由于正则表达式在记事本++中可以做到将“term”写成大写(大写)字母——TERM?

谢谢!

4

1 回答 1

14
Find what: ^(\S+)(?=\s*-)
Replace with: \U$1

这是做什么的?搜索模式在行首匹配尽可能多的非空格字符 ( ) 并由于括号\S+将它们捕获在变量中。$1之后是一个前瞻,断言这个“单词”后面跟着一个连字符(中间没有其他任何东西)。此先行实际上并未包含在匹配中,因此不会被删除/替换。

替换的开头\U是“在此处以大写形式输出所有内容,除非您用“停止\E”。然后$1写回我们匹配的内容\S+(在你的情况下term)。但是大写。

确保更新到 Notepad++ 6。在此之前,正则表达式有点古怪。

这是替换字符串中可能发生的事情的文档。

编辑:

我想您的实际行可能比仅在行首有一个单词然后是连字符更有趣。但是从你给出的例子中我无法判断。但是要对任意数量的单词执行此操作并忽略行首的空格(只要行中的某处有连字符),您可以执行以下操作:

Find what: ^(([ \t]*[^\s-]+)*)(?=[ \t]*-)

但是如果没有实际的输入示例,恐怕您必须自己找出正确的搜索模式。

于 2012-12-01T14:59:54.543 回答