【发布时间】:2018-08-20 05:09:14
【问题描述】:
我需要一个正则表达式来提取分隔符之间的特定字符,特定字符是~,分隔符是"。
这是一些示例文本:
~104.7866 ~"~A.SITI FATONAH "~2014/06/23
和
0.0 ~ 0.0 ~"ENI NURLINI ( 341676 ) ~ "~2016/05/18
我想删除两个"之间的~,所以输出是
~104.7866 ~"A.SITI FATONAH "~2014/06/23
和
0.0 ~ 0.0 ~"ENI NURLINI ( 341676 ) "~2016/05/18
我打算在 sql 中使用 regex_replace 来替换 ~ 但我找不到合适的正则表达式
【问题讨论】:
-
引号内可以有多个
~s吗? -
由 @CertainPerformance 确定,棘手的情况是一对
".."引号内有多个~s;否则用"$1$2"替换"([^~]*)~([^~]*)"就足够了[我说的是regex一般;从未使用过nsregularexpression] -
还有一个问题是输入看起来像这样
a"b"c"d"。您会认为c包含在引号内吗?因为从技术上讲,它不是。 -
@CertainPerformance 引号内只有一个 ~
-
是Oracle SQL吗? PostgreSQL?微软 SQL?在前两个的情况下,
"(.*)~(.*)"=>\1\2如果字符串中只有一对引号并且总是有 1 个~可以删除。
标签: regex google-bigquery