![notepad++ 正则表达式用于将单词中间的大写字母替换为小写字母](https://linux22.com/image/1589542/notepad%2B%2B%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%94%A8%E4%BA%8E%E5%B0%86%E5%8D%95%E8%AF%8D%E4%B8%AD%E9%97%B4%E7%9A%84%E5%A4%A7%E5%86%99%E5%AD%97%E6%AF%8D%E6%9B%BF%E6%8D%A2%E4%B8%BA%E5%B0%8F%E5%86%99%E5%AD%97%E6%AF%8D.png)
我一直在致力于文本识别,最终发现单词中间或末尾出现了大写字母(例如,用 wOrd 代替 word;用 leSS 代替 less)。
- 有没有办法使用 notepad++ 进行查找和替换,以便将大写/小写字符转换为小写/小写字符?(我可以选择整个文本,并将所有字符更改为小写/小写,但这会更改名称、句子开头的错误字符)
- 是否可以避免改变缩写词(例如 USA 应该保持不变)?
- (更困难的事情)是否可以从此转换中排除一些单词?例如,有些物理单位(例如 eV、mW、kJ)应该保持不变,即不应更改。... 我认为,一般来说,物理单位是 2 个字符的单词(这里也有一些例外,但我想我可以手动处理它们)
谢谢!R
答案1
- Ctrl+H
- 找什么:
\b(?!(?:[A-Z]+|eV|mW|kJ)\b)([A-Z]?)(\w+)
- 用。。。来代替:
$1\L$2
- 检查匹配大小写
- 检查环绕
- 检查正则表达式
- Replace all
解释:
\b # word boundary
(?! # negative lookahead, make sure we haven't a word
(?: # non capture group
[A-Z]+ # all word is uppercase
| # OR
eV # literally (electronVolt)
| # OR
mW # literally (milliWatt)
| # OR
kJ # literally (kiloJoule) (You can add all exeptions you want here)
)\b
)
([A-Z]?) # group 1, an optional uppercase at the beginning of a word
(\w+) # group 2, 1 or more word character
替代品:
$1 # content of group 1, optional uppercase
\L$2 # lowercased group 2
鉴于:
WORD, WoRd, Word, IS, tHE, iT, eV, mW, kJ
给定示例的结果:
WORD, Word, Word, IS, the, it, eV, mW, kJ
屏幕截图:
\b(?!(?:[A-Z]+|(?:[yzafpnµmcdhk]|da)(?:[ACFJKLNSTVW]|Bq|Gy|Hz|Pa|Sv|Wb|eV))\b)([A-Z]?)(\w+)
在哪里:
[yzafpnµmcdhk] # y(octo), z(epto), a(tto), f(emto), p(ico), n(ano), µ(micro), m(illi), c(enti), d(eci), h(ecto), k(ilo)
da # deca
[ACFJKLNSTVW] # A(mpère), C(oulomb), F(arad), J(oule), K(elvin), L(iter), N(ewton), S(iemens), T(esla), V(olt), W(att)
Bq # Becquerel
Gy # Gray
Hz # Hertz
Pa # Pascal
Sv # Sievert
Wb # Weber
eV # Electronvolt
答案2
是的,你可以在 Notepad++ 中执行此操作:
- 找什么:
([a-z]+[A-Z]+\w*)
- 替换为:
\L\1
- 确保选中“匹配大小写”和“正则表达式”
这将查找以小写字母开头且包含大写字母的字符序列,并将其转换为小写
- 不会转换缩写(美国),因为它们不包含小写字母
- 不会转换单词开头的大写字母
(例如“UPpERCase”=>“UPpercase”,因为正则表达式将匹配并转换“pERCase”) - 你可以检查它是如何工作的这里
因为设置例外情况更加困难,所以我对此没有建议。
答案3
如果使用 \L,则会将其右侧的所有内容都小写;如果只需将匹配项小写(例如:$1),则使用 \l(小写 L)。
例如:首字母大写
rexp (\w+) (\w+) (\w+) (\w+)
repl-> \L$1 $2 $3 $4
结果-> 首字母大写
repl-> \l$1 $2 $3 $4
result-> 第一个字母是大写
答案4
如果使用,\L
则将右侧的所有内容都小写。如果要结束\L
运算符,则必须使用\E
例子
Text: This Is An Example
Regex: (\w+) (\w+) (\w+) (\w+)
Replace: \L$1 $2 \L$3 $4
Result: this is an example
Replace: \L$1\E $2 \L$3\E $4
Result: this Is an Example