例如,有很多这样的行:“术语 - 定义”。由于Notepad ++中的正则表达式可以用“大写”字母写成“术语” - TERM?
谢谢!
答案 0 :(得分:14)
Find what: ^(\S+)(?=\s*-)
Replace with: \U$1
这是做什么的?搜索模式在行的开头尽可能多地匹配非空格字符(\S+
),并因括号而在变量$1
中捕获它们。之后是一个前瞻,断言这个“单词”之后是一个连字符(之间没有任何其他内容)。这个预测实际上并未包含在匹配中,因此不会被删除/替换。
替换以\U
开头,其中“以大写形式输出所有内容,除非您使用\E
停止此操作”。然后$1
会回复我们与\S+
匹配的内容(在您的情况下为term
)。但是大写。
确保更新到Notepad ++ 6.在此之前,正则表达式有点古怪。
Here is the documentation of what's possible in the replacement string.
修改强>
我猜你的实际行可能比在行的开头有一个单词然后连字符更有趣。但是从你给出的例子我无法分辨。但要为任意数量的单词执行此操作并忽略行开头的空格(只要行中某处有连字符),您可以执行以下操作:
Find what: ^(([ \t]*[^\s-]+)*)(?=[ \t]*-)
但是如果没有实际的输入示例,我恐怕你必须自己弄清楚正确的搜索模式。