我希望在我们收到的一些ob告中将简单的短划线改为短划线。但是只有在死亡之城之后才会出现这种情况。
文字如下:
@M_DeathNoticeHed:Alex <\n>Ornelas
@M_DeathNoticeBod:ALAMO <\!-> Alex Ornelas <\n>, 25, died Tuesday, Aug. <\n>16, 2016 at Alamo. Me<\h>morial Funeral Home of <\n>San Juan is in charge of ar<\h>rangements.
@M_DeathNoticeHed:Almaquire Cadena
@M_DeathNoticeBod:RIO GRANDE CITY <\!-> Almaquire <\n>Cadena , 87, died Tues<\h>day, Aug. 16, 2016 at Pax <\n>Villa Hospice, in McAllen, <\n>TX. Sanchez Funeral Home <\n> of Rio Grande City is in <\n>charge of arrangements.
@M_DeathNoticeHed:AnaRose <\n>Collazi
@M_DeathNoticeBod:MISSION <\!-> AnaRose <\n>Collazo , 44, died Wednes<\h>day, Aug. 17, 2016 at Mis<\h>sion Regional Medical Cen<\h>ter in Mission. Virgil Wilson <\n>Mortuary of Mission is in <\n>charge of arrangements.
@M_DeathNoticeHed:Andy Garza
@M_DeathNoticeBod:RIO GRANDE CITY <\!-> Andy <\n>Garza , 21, died Tuesday, <\n>Aug. 16, 2016 at Chicago, <\n>IL. Rodriguez Funeral <\n>Home of Roma is in <\n>charge of arrangements.
请注意,每"@M_DeathNoticeBod: CITY"
后"<\!->"
符号表示我需要更改为短划线的短划线。
我的正则表达式代码未将"<\!->"
与前一个城市和"@M_DeathNoticeHed:"
一起选中。
@M_DeathNoticeBod:([^A-Za-z]*?[A-Z][A-Za-z]*)([^A-Za-z]*?[A-Z][A-Za-z]*) [<\!->]
它也没有选择包含3个名字的城市,如"RIO GRANDE CITY"
。我选择这个是因为短划线出现在文件中我不想替换的其他位置。
如果我可以选择该部分,我可以在这里替换短划线。
答案 0 :(得分:1)
这个正则表达式应该这样做:
@M_DeathNoticeBod:([A-Z ]*) (<\\!->)
答案 1 :(得分:0)
如果你关心的行总是以“@M_DeathNoticeBod:”开头,后面是死亡之城,接着是&lt;! - &gt;你希望更换,我认为简单的事情可以做到这一点:
(@M_DeathNoticeBod:.*)<\\!->
捕获组1将包含所有内容,直到第一个“&lt; \! - &gt;”,因此如果您正在进行搜索并替换,则只需将该正则表达式的每次出现替换为组1的内容(通常用'\ 1'表示,然后用短划线表示。
答案 2 :(得分:0)
我认为这就是你真正想要的:
(?<=@M_DeathNoticeBod:).+<\\!->
为了解释事情,括号内的第一部分(?<=@M_DeathNoticeBod:)
是不参与匹配的正面观察,但确保尾随部分始终以该表达开头。
我的尾随部分.+
应该捕获任何包含任何字符序列的城市名称,然后是&lt;! - &gt;分隔符,由<\\!->
正则表达式捕获。