0

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

--Updates--
感谢您的所有回复,这里有更多关于问题的详细信息:
以下是文件的快照

"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"  

基本上我需要检测第 2 列中所有后跟数字的“-”,并插入单词开头的字母之间。

关于语言,我实际上使用的是 Notepad++,认为相同的表达式可以通过移植到 SED 等其他平台来实现。

4

3 回答 3

0
([A-Za-z]){1,}([0-9]{1,})-([0-9]{1,})

正则表达式匹配:

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

替换模式是这样的:

$1$2-$1$3

PHP preg 中的示例:

$output = preg_replace('/([A-Za-z]){1,}([0-9]{1,})-([0-9]{1,})/', '$1$2-$1$3', $input);
于 2012-09-26T01:13:23.313 回答
0

如果您提供更具体的示例以及您使用的语言/实现方式,将会有所帮助。

从字面上理解你的问题,虽然......

s/(C|R)(\d)-(\d)/\1\2-\1\3/g

编辑:

根据评论,您要替换

\b(C|R)(\d+)-(\d+)

\1\2-\1\3
于 2012-09-25T17:43:43.643 回答
0

你必须做这样的事情(Python示例):

>>> import re
>>> test = 'C1-2 R1-2' 
>>> re.sub(r'([A-Z])(\d+)-(\d+)', r'\1\2-\1\3', test)
'C1-C2 R1-R2'

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

于 2012-09-25T17:46:36.833 回答