notepad++ 正则表达式用于将单词中间的大写字母替换为小写字母

notepad++ 正则表达式用于将单词中间的大写字母替换为小写字母

我一直在致力于文本识别,最终发现单词中间或末尾出现了大写字母(例如,用 wOrd 代替 word;用 leSS 代替 less)。

  1. 有没有办法使用 notepad++ 进行查找和替换,以便将大写/小写字符转换为小写/小写字符?(我可以选择整个文本,并将所有字符更改为小写/小写,但这会更改名称、句子开头的错误字符)
  2. 是否可以避免改变缩写词(例如 USA 应该保持不变)?
  3. (更困难的事情)是否可以从此转换中排除一些单词?例如,有些物理单位(例如 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

相关内容