如何区分引号分隔符和引号分隔符

时间:2014-02-06 15:33:18

标签: java regex

我有一个包含以下内容的txt文件

SELECT TOP 20  personid AS "testQu;otes" 
FROM myTable
WHERE lname LIKE '%pi%' OR  lname LIKE '%m;i%';
SELECT TOP 10  personid AS "testQu;otes" 
FROM myTable2
WHERE lname LIKE '%ti%' OR  lname LIKE '%h;i%';
............

上述查询可以是任何合法的SQl语句(在一行或多行,即用户希望输入的任何方式)

我需要拆分这个txt并放入一个数组

File file ... blah blah blah
..........................
String myArray [] = text.split(";");

但是这不能正常工作,因为它考虑了所有;。我需要忽略;";"内的';'。例如,此处;中的'%h;i%'不计算在内,因为它位于''内。我怎样才能正确分割?

2 个答案:

答案 0 :(得分:3)

假设您要拆分的每个;位于行尾,您可以尝试在每个; +行分隔符之后拆分

text.split(";"+System.lineSeparator())

如果您的文件有其他行分隔符,则可以使用

进行默认分隔
text.split(";\n")
text.split(";\r\n")
text.split(";\r")

顺便说一句,如果你想在分割结果中加入;(如果你不想摆脱它),你可以使用look-behind机制,如

text.split("(?<=;)"+System.lineSeparator())

如果您逐行动态阅读文件,请检查line.endsWith(";")

答案 1 :(得分:1)

我看到';'之后的'新行' - 它可以推广到整个文本文件? 如果您必须/想要使用正则表达式,您可以使用

形式的正则表达式进行拆分
;$

$表示“行尾”,取决于Java的正则表达式实现(不记得了)。

我不会将正则表达式用于此类任务。解析文本并计算'或'的数量以便能够识别实数“;”分隔符就足够了。