【发布时间】:2012-12-01 14:49:03
【问题描述】:
例如,有很多这样的行:“术语 - 定义”。由于Notepad++中的正则表达式可以做到将“term”写成大写(大写)字母——TERM?
谢谢!
【问题讨论】:
例如,有很多这样的行:“术语 - 定义”。由于Notepad++中的正则表达式可以做到将“term”写成大写(大写)字母——TERM?
谢谢!
【问题讨论】:
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]*-)
但如果没有实际的输入示例,恐怕您必须自己弄清楚正确的搜索模式。
【讨论】:
documentation