Regex 正则表达式:转换所有单词';大写字母首字母(记事本+;+;或类似)
我在过去做了很多尝试来掌握正则表达式,我已经解决了问题,但仍然没有清晰的理解 现在,我也解决了一个问题,但解决方案太难看了。 因此,我有许多用空格分隔的带引号的字符串:Regex 正则表达式:转换所有单词';大写字母首字母(记事本+;+;或类似),regex,string,notepad++,Regex,String,Notepad++,我在过去做了很多尝试来掌握正则表达式,我已经解决了问题,但仍然没有清晰的理解 现在,我也解决了一个问题,但解决方案太难看了。 因此,我有许多用空格分隔的带引号的字符串: “字符串”“字符串两个”“大量字符串” 我需要把每个字都大写。因此,我为\u\1查找并替换(.),为“\u\1查找并替换第二次迭代”(.) 问题是: 如何在一次迭代中完成(具体来说:大写字母在引号和空格之后) 一般来说,如何对所有单词执行此操作 如何对预定义单词列表以外的所有单词执行此操作(如of等) 和可选问题 如何将单
“字符串”“字符串两个”“大量字符串”
我需要把每个字都大写。因此,我为\u\1
查找并替换(.)
,为“\u\1
查找并替换第二次迭代”(.)
问题是:
- 如何在一次迭代中完成(具体来说:大写字母在
和引号
之后)空格
- 一般来说,如何对所有单词执行此操作
- 如何对预定义单词列表以外的所有单词执行此操作(如
等)of
- 如何将单词的首字母大写,其他字母小写。更可怕的是:保留大写的单词不变。(我知道这太多了,但可能至少有人会费心给我一些指导方针)
请原谅我的无知。我对此感到惭愧,但好奇心占了上风。这在Perl中是可能的:
#!/usr/bin/perl
$test_data = '"string" "string two" "lots of strings"';
$test_data =~ s/\b(.)/\u$1/go;
print $test_data . "\n";
但我不确定是否可以在记事本++中实现这一点。我没有在记事本++中尝试过这一点(见下文),但我的记事本编辑器(相当类似于记事本++)处理替换\,我是这样做的:
查找内容:\b(\w)(\w+)
替换为:\u$1\E$2
"string" "string two" "lots of the strings"
变成:
"String" "String Two" "Lots of the Strings"
你可以在否定前瞻中添加你想要的每一个单词:(?!of the | in | out)
Regex不能这样做,但是转换(posix styletr'[a-z]'[a-z]'
或perl styletr/a-z/a-z/
,请参见man-tr
或perldoc-f-tr
)可以。我不确定notepad++是否能做到这一点。在npp++中实现这一点的唯一方法是使用插件。如果你找不到,你就得自己创造一个。
"String" "String Two" "Lots of the Strings"