java正则表达式字符串被 "not\"分割

标签 java regex

实际上我只需要用JAVA编写一个简单的程序来将MySQL INSERTS行转换为CSV文件(每个mysql表等于一个CSV文件)

在JAVA中使用正则表达式是最好的解决方案吗?

我的主要问题是如何正确匹配这样的值:'this is\'cool\'...' (如何忽略转义的')

示例:

INSERT INTO `table1` VALUES ('this is \'cool\'...' ,'some2');
INSERT INTO `table1` (`field1`,`field2`) VALUES ('this is \'cool\'...' ,'some2');

谢谢

最佳答案

假设您的 SQL 语句在语法上有效,您可以使用

Pattern regex = Pattern.compile("'(?:\\\\.|[^'\\\\])*'");

获取匹配所有单引号字符串的正则表达式,忽略其中的转义字符。

解释没有所有这些额外的反斜杠:

'         # Match '
(?:       # Either match...
 \\.      # an escaped character
|         # or
 [^'\\]   # any character except ' or \
)*        # any number of times.
'         # Match '

给定字符串

'this', 'is a \' valid', 'string\\', 'even \\\' with', 'escaped quotes.\\\''

这匹配

'this'
'is a \' valid'
'string\\'
'even \\\' with'
'escaped quotes.\\\''

关于java正则表达式字符串被 "not\"分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560546/

相关文章:

regex - 如何改进这个正则表达式?

javascript - 检查文本框是否仅包含数字

php - 如何在php中使用J修饰符?

java - 读取 csv 文件,并在值本身中指定分隔符

regex - 在 SSMS 2016 中使用正则表达式替换来修剪线条

Python 搜索字符串并替换下一行中的字符

java - 如何在 JSF 1.2 中扩展转换器

java - jar 文件无法正确找到文件

java - 处理 JSP page/WEB-INF/views/ViewPage.jsp 第 130 行时发生异常

java - 为什么插入空 ArrayList 比插入非空 ArrayList 花费更多时间?