记事本++正则表达式,用于用小写/小写替换单词中间的大写/大写字母

rad*_*dui 1 notepad++ regex

我一直在努力识别文本,最终在单词的中间或末尾使用大写/大写字母(例如 wOrd 代替 word;less 代替 less)。

  1. 有没有办法使用记事本++进行查找和替换,以便将大写/小写字符转换为小/小写字符?(我可以选择整个文本,并将所有字符更改为小写/小写,但这会更改名称、字符不正确的句子开头)
  2. 是否有可能避免将缩写词转换为更改(例如 USA 应保持不变)?
  3. (更难的事情)是否可以从这种转换中排除一些单词?例如,有一些物理单位(例如eV、mW、kJ)应该保持不变,即它们不应该改变。...我认为,一般来说,物理单位是 2 个字符的单词(这里也有一些例外,但我想我可以手动处理它们)

谢谢!电阻

Tot*_*oto 6

    \n
  • Ctrl+H
  • \n
  • 找什么:\\b(?!(?:[A-Z]+|eV|mW|kJ)\\b)([A-Z]?)(\\w+)
  • \n
  • 用。。。来代替:$1\\L$2
  • \n
  • 检查匹配大小写
  • \n
  • 检查环绕
  • \n
  • 检查正则表达式
  • \n
  • Replace all
  • \n
\n\n

解释:

\n\n
\\b              # word boundary\n(?!             # negative lookahead, make sure we haven\'t a word \n  (?:           # non capture group\n    [A-Z]+      # all word is uppercase\n  |             # OR\n    eV          # literally (electronVolt)\n  |             # OR\n    mW          # literally (milliWatt)\n  |             # OR\n    kJ          # literally (kiloJoule)  (You can add all exeptions you want here)\n  )\\b\n)\n([A-Z]?)        # group 1, an optional uppercase at the beginning of a word\n(\\w+)           # group 2, 1 or more word character\n
Run Code Online (Sandbox Code Playgroud)\n\n

替代品:

\n\n
$1          # content of group 1, optional uppercase\n\\L$2        # lowercased group 2\n
Run Code Online (Sandbox Code Playgroud)\n\n

鉴于:

\n\n
WORD, WoRd, Word, IS, tHE, iT, eV, mW, kJ\n
Run Code Online (Sandbox Code Playgroud)\n\n

给定示例的结果:

\n\n
WORD, Word, Word, IS, the, it, eV, mW, kJ\n
Run Code Online (Sandbox Code Playgroud)\n\n

屏幕截图:

\n\n

在此输入图像描述

\n\n

如果要处理所有单位和(子)倍数,请将查找内容更改为:

\n\n
\\b(?!(?:[A-Z]+|(?:[yzafpn\xc2\xb5mcdhk]|da)(?:[ACFJKLNSTVW]|Bq|Gy|Hz|Pa|Sv|Wb|eV))\\b)([A-Z]?)(\\w+)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在哪里:

\n\n
[yzafpn\xc2\xb5mcdhk]      # y(octo), z(epto), a(tto), f(emto), p(ico), n(ano), \xc2\xb5(micro), m(illi), c(enti), d(eci), h(ecto), k(ilo)\nda                  # deca\n\n[ACFJKLNSTVW]       # A(mp\xc3\xa8re), C(oulomb), F(arad), J(oule), K(elvin), L(iter), N(ewton), S(iemens), T(esla), V(olt), W(att)\nBq                  # Becquerel\nGy                  # Gray\nHz                  # Hertz\nPa                  # Pascal\nSv                  # Sievert\nWb                  # Weber\neV                  # Electronvolt\n
Run Code Online (Sandbox Code Playgroud)\n


Mát*_*ász 5

是的,您可以在 Notepad++ 中执行此操作:

  • 找什么: ([a-z]+[A-Z]+\w*)
  • 替换为: \L\1
  • 确保选中“匹配大小写”和“正则表达式”

这将查找以小写字母开头并包含大写字母的字符序列并将它们转换为小写

  • 不会转换缩写(美国),因为那些不包含小写字母
  • 不会在单词的开头转换大写字母(
    例如“UPpERCase”=>“UPpercase”,因为正则表达式将匹配并转换“pERCase”)
  • 你可以在这里查看它是如何工作的

根据设置例外更困难,我没有建议。