我正在尝试编写一个正则表达式来转换以下字符串:
1, Pneumonectomy | 2, Lobectomy | 3, Bilobectomy | 4, Sleeve resection lobectomy | 5, Segmentectomy | 6, Wedge resection | 7, Lung resection + chest wall, diaphragm | 8, Lung volume reduction type resection | 9, Exploratory thoracotomy / no resection | 100, Other
走进
其中每个竖线先用双引号替换,然后用空格替换,竖线后的第一个逗号先用等号替换,然后用双引号替换。
我可以匹配使用:
'\s*\|\s*'
被替换为
'" '
但我正在努力解决如何只替换管道后面的第一个逗号。
最终,我将在SAS中实现这一点,起诉如下:
format_string = prxchange('s/\s*\|\s*/" "/', -1, select_choices_or_calculations);
format_string = prxchange('s/\s*,\s*/ = "/', -1, format_string);
1条答案
按热度按时间wgeznvg71#
下面应该做的工作。根据需要进行调整:
(\d+),\s+(\w+(?>\s[\w\+\/,]+)*)(\s\|\s)?
使用此替换:
$1 = "$2"
你可以在这里测试这个表达式:https://regex101.com/r/JxiAxr/1