哈哈哈哈哈哈哈哈哈哈哈。哈哈哈哈哈哈哈哈哈哈哈。哈哈哈:“哈哈哈哈哈哈哈哈。”哈哈哈哈哈哈哈哈哈哈哈。哈哈哈哈哈哈哈哈哈哈哈。
想用句号进行分割,如何才不匹配引号内的句号?
1
billwsy 2019-03-24 22:55:31 +08:00 via iPhone
记得如果是任意多层嵌套的引号的话正则式是做不到的,3 类文法的限制,加条件限制吧?
|
2
richard1122 2019-03-24 23:18:42 +08:00
c# 的正则支持平衡组,看起来应该可以满足需求
|
3
DiamondbacK 2019-03-25 00:00:16 +08:00 1
$ str='f1。f2。f3:“ f4。f5。” f6。f7。“ f8。f9。”'
$ echo $str | sed -r ':a;s/^([^\n]*)(“[^\n]*”)/\1\n\2\n/;t a;' | sed '/^“.*”$/!s/。/\n/g' f1 f2 f3: “ f4。f5。” f6 f7 “ f8。f9。” 由于 sed 不支持懒惰匹配,所以第一步是从右边开始分割出引号字符串,并假定引号内没有换行符。 |
4
Alexinder 2019-03-25 04:07:49 +08:00 via Android
cfg 或者加个 Stack?
|
5
dsg001 OP @DiamondbacK 感谢指点,昨晚折腾了好长时间没搞定
|
6
DiamondbacK 2019-03-25 09:12:34 +08:00
@dsg001 不过这个方法不能解决嵌套引号的情况。
|
7
dsg001 OP @DiamondbacK 暂时还没嵌套的问题,正则这玩意儿总得碰到问题才能长进啊
|