我一直在尝试编写一个正则表达式,其功能与标题中所述完全相同。我需要找到xA或xkA或xmA的所有出现情况(以及x k A或xk A的变化形式),以便以后将其安培数格式化为:x A,x kA,x mA。
不幸的是,有了正则表达式,只要找到它,它就会选择数字+ A:
F- 2A WACEGF 2A OKR 10m A AC
>F- 3A WACEGF 3A OKR 10k A AC
>C- 7A WACEGC 7A OKR 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]|µ)\s*A
第二个没有选择任何内容:(
请注意,我尝试不删除数字前的字符,即如果我使用以下字符,则将其删除:>
或/
:
答案 0 :(得分:1)
您可以使用以下正则表达式:
(^|[^\w-])\b([0-9]+)([µmMkG]|µ)? ?A
替换时,请记住,您可以使用$
+标识组的数字来访问捕获组捕获的文本。例如。通过(^|[^\w-])
访问$1
文本,通过([0-9]+)
访问$2
文本,通过([µmMkG]|µ)
访问$3
。
请参见regex demo。
详细信息
(^|[^\w-])
-第1组:字符串开头或除字母,数字,下划线和-
之外的其他任何字符\b
-单词边界([0-9]+)
-第2组:一个或多个数字([µmMkG]|µ)?
-第3组(可选):µ
,m
,M
,k
,G
或µ
?A
- an optional space and then
A`。