正则表达式求助:替换Profit后斜杠为换行+TP
正则实现"profit"后斜杠批量替换为换行+TP的方案
问题需求
需要将文本中Take profit行内的所有正斜杠/或反斜杠\,替换为换行符加上TP (TP后带空格),同时不影响其他行的斜杠内容。
解决方案
使用正向零宽断言精准匹配profit后第一个数值后的斜杠,批量替换所有符合条件的斜杠:
正则表达式
(?<=profit\s+\d+)[\\/]
替换内容
\nTP
正则解释
(?<=profit\s+\d+):正向零宽断言,确保匹配的斜杠前是profit、一个或多个空白字符、一个或多个数字(即第一个利润值之后的位置),避免误匹配其他行的斜杠。[\\/]:匹配正斜杠/或反斜杠\(反斜杠需转义)。
效果验证
原文本:
*NEW* SHORT NOW 1887/1888.80 short levels Risk 0,5/1% no gambling SL 1891.40 Take profit 1867/1865/1860
替换后结果:
*NEW* SHORT NOW 1887/1888.80 short levels Risk 0,5/1% no gambling SL 1891.40 Take profit 1867 TP 1865 TP 1860
原方案问题分析
你之前使用的\b(Profit\b.*)\b(\\|\/)\b存在两个问题:
.*会贪婪匹配到最后一个斜杠前的所有内容,导致仅替换最后一个斜杠,无法批量处理多个斜杠。- 边界
\b的使用可能导致匹配范围不准确,比如当数值后紧跟斜杠时,\b可能无法正确识别边界。
内容的提问来源于stack exchange,提问作者OnlyHumain
相关产品推荐
相关产品推荐

