哈哈哈哈哈哈哈哈哈哈哈。哈哈哈哈哈哈哈哈哈哈哈。哈哈哈:“哈哈哈哈哈哈哈哈。”哈哈哈哈哈哈哈哈哈哈哈。哈哈哈哈哈哈哈哈哈哈哈。
想用句号进行分割,如何才不匹配引号内的句号?
![]() | 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 ![]() $ 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 暂时还没嵌套的问题,正则这玩意儿总得碰到问题才能长进啊 |