Док*_*инг 9 regex text notepad++
例如,有很多这样的行:"术语 - 定义".因为Notepad ++中的正则表达式可以用"大写"字母写成"术语" - TERM?
谢谢!
Mar*_*der 14
Find what: ^(\S+)(?=\s*-)
Replace with: \U$1
Run Code Online (Sandbox Code Playgroud)
这是做什么的?搜索模式在行的开头匹配尽可能多的非空格字符(\S+
),并$1
因括号而在变量中捕获它们.之后是一个前瞻,断言这个"单词"之后是一个连字符(之间没有任何其他内容).此前瞻实际上并未包含在匹配中,因此不会删除/替换它.
替换开始时\U
所说的"在大写之后输出所有内容,除非你用\E
".然后$1
回写我们匹配的内容\S+
(在您的情况下term
).但是大写.
确保更新到Notepad ++ 6.在此之前,正则表达式有点古怪.
编辑:
我猜你的实际行可能比在行的开头有一个单词然后连字符更有趣.但是从你给出的例子我无法分辨.但要为任意数量的单词执行此操作并忽略行开头的空格(只要行中某处有连字符),您可以执行以下操作:
Find what: ^(([ \t]*[^\s-]+)*)(?=[ \t]*-)
Run Code Online (Sandbox Code Playgroud)
但是如果没有实际的输入示例,我恐怕你必须自己弄清楚正确的搜索模式.