首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用正则表达式将C1-2 R1-2转换为C1-C2 R1-R2

用正则表达式将C1-2 R1-2转换为C1-C2 R1-R2
EN

Stack Overflow用户
提问于 2012-09-26 01:40:38
回答 3查看 173关注 0票数 0

我正在修改一个文件以符合新标准。许多年前,我只学了一周的RegEx,但从来没有广泛地使用过。因此,我在这里寻求一个快速的解决方案。有人愿意帮忙吗?

-更新--

感谢您的回复,以下是问题的更多详细信息:

以下是该文件的快照

代码语言:javascript
复制
"Qty"   "Reference" "Part Name" "PCB DECAL" "Manufacturer"  "Description"   "Value"  
"4" "C37 C67-68"    "2.2UF/10V" "C0805" ""  "Capacitor" "2.2UF/10V"  
"2" "CPL1-2"    "CPL"   "CPL-250-200-NOVIA" "Anaren"    ""  "1P510"    
"15"    "M1-15" "HOLE100"   "HOLE100_180"   ""  ""  ""  
"4" "L1-2 L5 L7"    "IND"   "L0603" ""  "MOLDED INDUCTOR, 0.5" PIN SPACING" "2.2nH"  
"9" "R2 R8 R12 R34-35"  "R" "R0603" ""  ""  "0"  

基本上,我需要检测第二列中所有后面跟着一个数字的"-“,并在单词开头的字母之间插入。

关于语言,我实际上使用的是Notepad++,如果涉及到这一点,我认为同样的表达式可以被移植到其他平台,比如SED。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-26 09:13:23

代码语言:javascript
复制
([A-Za-z]){1,}([0-9]{1,})-([0-9]{1,})

正则表达式匹配:

  • 字符A到Z,a到z一次或多次(第一次捕获),然后是
  • 字符0到9一次或多次(第二次捕获),接着是
  • - character -,然后是
  • 字符0到9一次或多次(第三次捕获)

<代码>F210

替换模式是这样的:

代码语言:javascript
复制
$1$2-$1$3

PHP preg示例:

代码语言:javascript
复制
$output = preg_replace('/([A-Za-z]){1,}([0-9]{1,})-([0-9]{1,})/', '$1$2-$1$3', $input);
票数 0
EN

Stack Overflow用户

发布于 2012-09-26 01:43:44

如果你提供一个更具体的例子,以及你正在使用的语言/实现,将会有所帮助。

不过,从字面上看你的问题...

代码语言:javascript
复制
s/(C|R)(\d)-(\d)/\1\2-\1\3/g

编辑:

根据注释,您想要替换

代码语言:javascript
复制
\b(C|R)(\d+)-(\d+)

使用

代码语言:javascript
复制
\1\2-\1\3
票数 0
EN

Stack Overflow用户

发布于 2012-09-26 01:46:37

您必须这样做(Python示例):

代码语言:javascript
复制
>>> import re
>>> test = 'C1-2 R1-2' 
>>> re.sub(r'([A-Z])(\d+)-(\d+)', r'\1\2-\1\3', test)
'C1-C2 R1-R2'

基本上,您需要用\1\2-\1\3替换([A-Z])(\d+)-(\d+)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12588265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档