我以前的问题贴在
托托提出了一个很好的解决方案,谢谢
但是,有时我可以更改在第二个连字符"-“之后插入一行。
当我通过在第一连字符和第二连字符之间转换顺序来改变顺序时
我想得到这个:
在此之前:
鲍勃·克莱特里-8月- 6325.32 -波特兰,OR,美国
约翰·克莱特里-10月份- 7289.25 -波特兰,OR,美国
Alan 11月- 12.582.00 -波特兰,OR,美国
彼得·芬利-9月- 5312.00 -新泽西,美国
彼得·芬利-10月- 7325.00 -新泽西,美国
彼得·芬利-11月- 8240.00 -新泽西,美国
杰克诺顿-10月- 12425.60 -纽约,美国
席琳·诺顿-11月- 13328.32 -纽约,美国
与Regex重新订购:
第一步
查找:^(.+?)s-s+(.+?)s-s+(.+?)s-s
取代:$2 - $1 - $3
注释:我在连字符前后附加空格"-“表示名称复合,复合示例:让-克劳德和连字号在URL等.
在第一步之后。
8月-鲍勃·克莱特里-6325.32波特兰,OR,美国
10月-- john Cleatry -7289.25波特兰,OR,美国
11月11日-艾伦·克莱特里-12.582.00波特兰,OR,美国
9月-彼得·芬利-美国新泽西州5312.00
10月-彼得·芬利-美国新泽西州
11月-彼得·芬利-8240.00新泽西,美国
10月-杰克·诺顿-12425.60纽约,美国
11月-席琳·诺顿-13328.32纽约,美国
我想得到这个:
8月-鲍勃·克莱特里-6325.32波特兰,OR,美国
10月-- john Cleatry -7289.25波特兰,OR,美国
11月11日-艾伦·克莱特里-12.582.00波特兰,OR,美国
9月-彼得·芬利-美国新泽西州5312.00
10月-彼得·芬利-美国新泽西州
11月-彼得·芬利-8240.00新泽西,美国
10月-杰克·诺顿-12425.60纽约,美国
11月-席琳·诺顿-13328.32纽约,美国
发布于 2021-11-20 10:57:45
您可以在重新排序之前添加一个步骤,以匹配所有以以下方式开头的行:
^(.+?)\s-\s.*(?:\R\1.*)+然后在替换中,使用被换行符包围的完全匹配。
\n$0\n对于第二步,您可以使用已经在问题中使用的方法。
假设已经没有换行符,并且如果您不希望在替换时在字符串的开头或末尾添加额外的换行符,则可以使用条件替换。
找出什么:
(?:(^)|\R)((.+?)\s-\s.*(?:\R\3.*)+)(?:(\R)|$)代之以:
(?{1}:\n\n)$2(?{4}\n\n:)

为了重新订购

https://stackoverflow.com/questions/70045155
复制相似问题