匹配特定模式

时间:2013-06-10 19:57:32

标签: java

我试图保留双引号之间的所有句子并将它们放在数组结果[]

例如我可以有以下代码

public static void main (String[] args){

int i = 0 ;

System.out.println ( "words to be printed" );


}

在此示例中,数组结果应该有一个字符串“要打印的单词”

我正在使用的技术是拆分新行(\ n)并检查每个String是否包含双引号并将其放入结果中

我使用"your string here".split("\"")[1]来提取引号

之间的文本

问题是有些字符串有引号而有些则不引用。

我试过了: if("your \"string\" here".split("\"")[1]) - >但如果字符串中没有引号,则会出现异常 如何检查字符串是否有引号?

5 个答案:

答案 0 :(得分:2)

这是使用正则表达式匹配"之间的所有内容的合适时间。所以像这样的一行

"myWord" and somewhere else "myOther words" 

应输出

myWord
myOther words

paren匹配的示例代码:

Pattern pattern = Pattern.compile("\"(.*?)\"");
for (String line: myLines){
    Matcher matcher = pattern.matcher(line);
    while (matcher.find()){
        System.out.println("found match '"+matcher.group(1)+"'");
    }
}

如果你只想匹配一行,则忽略for循环,只匹配一个输入。

答案 1 :(得分:1)

使用MyString.contains(“\”“)检查是否存在双引号。 如果存在,你就像你说的那样使用拆分。 如果不存在make yourString =“\”“+ youtString;并在之后使用split

答案 2 :(得分:1)

如果你的字符串有两个双引号,那么split(“\”“)将分成三段。所以你可以这样检查(如果预期不超过一个双引号对):

String[] s = input.split( "\"" );
if( s.length > 2 )
  System.out.println( s[ 1 ] );

答案 3 :(得分:0)

这是你如何检查字符串是否有引号

的方法
      if (yourText.contains("\"")){
    //do something
       }

答案 4 :(得分:0)

而不是按\n分割使用(如果你使用的是java 1.7)

String newLine = System.getProperty("line.separator");

然后使用"your string here".split(newLine)。希望这有帮助。