Notepad++正则表达式:只搜索字母而不搜索数字字符的单词



下面是一个我必须处理的字符串示例:

<pnr>0240978840</pnr>;Amplificator AD8622ARMZ;<upa>1</upa>
<pnr>0273101670</pnr>;Power Management LT1236BIS8-10;<upa>1</upa>
<pnr>0299801750</pnr>;Power Management LT1175IS8-5;<upa>3</upa>
<pnr>0233201780</pnr>;Amplificator LT1498CS8;<upa>4</upa>

我已经搜索了一段时间,并尝试了几种模式来嵌入";name";标签中的电子元件和标签中的以下字符串的

<kwd>Amplificator</kwd><adt>AD8622ARMZ</adt>

<kwd>Power Management</kwd><adt>LT1236BIS8-10</adt>

因此,对于这个例子,我搜索:"放大器";但不是";AD8622ARMZ";"电源管理";但不是";LT1236BIS8-10";。

我不知道如何只搜索字母单词,而不搜索字母和数字单词。我试过了:

;(w+)s*(D+) which finds ;Amplificator AD and ;Power Management LT
;(w+)s*([^W+]+) which finds ;Amplificator AD8622ARMZ and ;Power Management (only !)
;(w+)s*([^d]) which finds ;Amplificator A
;(w+)s*(D+)S which finds ;Amplificator A and ;Power Management LT1
;(w+)s*([a-zA-Z]+)[^0-9]+ which finds ;Amplificator AD and ;Power Management LT

我从几天开始使用regex,但对我来说很难理解";规则:

好的,w是一个有字母和数字的单词d是一个数字,但如何用字母和没有数字的单词来表达呢?

我读了很多教程,但其中一些太难了,所用的标记没有帮助中写的那么简单。。。

对我来说,目的不仅是答案,而且我真的想提高自己,理解。。。

非常感谢您的灯光。如果有人知道一个不完全初学者的tuto regex记事本++tuto,那就太棒了!

向致以最良好的问候

给定字符串示例,只要搜索&替换不适用于已替换的文本,没有必要使其比更复杂

查找内容:;(.*) (.*);
替换为:;<kwd>1</kwd><adt>2<adt>;

Notepad++是PCRE,所以它可以工作:

正则表达式

;((?:[a-zA-Z]+ )+)(.*?);
  • ;-捕获第一个分号
  • (-启动一个捕获组;置换中的$1
    • (?:[a-zA-Z]+ )+-多次捕获后面没有空格的数字的单词
  • )—关闭$1捕获组;这应该包含我们的非数字单词
  • (-启动一个捕获组;置换中的$2
    • .*?-松散地捕获所有内容;?阻止我们捕获最后的分号
  • )-关闭$2捕获组;这应该包含我们的字母数字单词
  • ;-捕获最后一个分号

替换

<kwd>$1</kwd><adt>$2</adt>

https://regex101.com/r/jgyikG/1

最新更新