如果在数字之前有短划线并且在其他字符串内,则REGEX排除

问题描述 投票:2回答:1

我一直在努力编写一个正则表达式,完全按照标题中的说明进行操作。我需要找到所有出现的xA,或xkA或xmA(以及变化,例如x k A或xk A),以便稍后格式化这些安培:x A,x kA,x mA。

不幸的是,正如我所知,只要找到它就会选择数字+ A:

F-2A WACEGF2AOKR 10m A AC

F-3A WACEGF3AOKR 10k A AC

C-7A WACEGC7AOKR 20m A.

我的正则表达式:

([0-9]+)([m|k])? ?A

我在网上找到了一些方案:

[^- a-zA-Z]([0-9]+)([µ|µ|m|M|k|G|]) ?A

但它在Dreamweaver中运行时失败了(我必须在DW中使用它,它是更大命令的一部分) - 它在后向引用中“吃掉”部分字符串,例如。 “1000”中的“10”

编辑:

\b([0-9]+)([µmMkG]|µ)\s*A 

(?<![0-9])([0-9]+)([µmMkG]|&micro;)\s*A

第一个选择如下:enter image description here

第二个没有选择任何东西:(

注意我试图不删除数字前的字符,即>/,如果我使用以下内容删除:

enter image description here

regex dreamweaver
1个回答
1
投票

您可以使用以下正则表达式:

(^|[^\w-])\b([0-9]+)([µmMkG]|&micro;)? ?A

更换时,请注意您可以使用$ +识别该组的数字来访问使用捕获组捕获的文本。例如。 (^|[^\w-])文本可通过$1访问,([0-9]+)文本可通过$2访问,([µmMkG]|&micro;)可通过$3访问。

regex demo

细节

  • (^|[^\w-]) - 第1组:字符串的开头或除字母,数字,下划线和-之外的任何字符
  • \b - 一个单词边界
  • ([0-9]+) - 第2组:一个或多个数字
  • ([µmMkG]|&micro;)? - 第3组(可选):µmMkG&micro;
  • kazxsopoukazxsopoiA`。
© www.soinside.com 2019 - 2024. All rights reserved.