私はこのテキスト行を持っています。引用符の数は次のように変わる可能性があります:
Here just one "comillas"
But I also could have more "mas" values in "comillas" and that "is" the "trick"
I was thinking in a method that return "a" list of "words" that "are" between "comillas"
見積もりの間のデータを取得するにはどうすればよいですか?
結果は次のようになります。
コミラ
マス、コミラ、トリック
a、言葉、は、comillas
正規表現を使用して、この種の情報を見つけることができます。
Pattern p = Pattern.compile("\"([^\"]*)\"");
Matcher m = p.matcher(line);
while (m.find()) {
System.out.println(m.group(1));
}
この例では、解析される行の言語が文字列リテラル内の二重引用符のエスケープシーケンスをサポートしていない、複数の「行」にまたがる文字列を含む、または単一引用符のような文字列の他の区切り文字をサポートしていると想定しています。
Apache commons-langライブラリのStringUtils
を確認してください-substringsBetween
メソッドがあります。
String lineOfText = "if(getip(document.referrer)==\"www.eg.com\" || getip(document.referrer)==\"192.57.42.11\"";
String[] valuesInQuotes = StringUtils.substringsBetween(lineOfText , "\"", "\"");
assertThat(valuesInQuotes[0], is("www.eg.com"));
assertThat(valuesInQuotes[1], is("192.57.42.11"));
ファイルからのすべての出現を取得したい場合:
import Java.io.BufferedReader;
import Java.io.FileReader;
import Java.io.IOException;
import Java.util.regex.Matcher;
import Java.util.regex.Pattern;
public class testReadQuotes {
public static void main(String args[]) throws IOException{
Pattern patt = Pattern.compile("\"([^\"]*)\"");
BufferedReader r = new BufferedReader(new FileReader("src\\files\\myFile.txt"));
String line;
while ((line = r.readLine()) != null) {
Matcher m = patt.matcher(line);
while (m.find()) {
System.out.println(m.group(0));
}
}
}
}
String line = "if(getip(document.referrer)==\"www.eg.com\" || getip(document.referrer)==\"192.57.42.11\"";
StringTokenizer stk = new StringTokenizer(line, "\"");
stk.nextToken();
String egStr = stk.nextToken();
stk.nextToken();
String ipStr = stk.nextToken();
まず、==ではなくequals()を使用する必要があることに注意してください。 「==」はデフォルトで、それらがメモリ内の同じインスタンスであるかどうかを尋ねますが、これは文字列の場合もそうです。 myString.equals( "...")を使用すると、文字列の値を比較できます。
引用符の間の値をどのように取得するかについては、どういう意味かわかりません。 「...」は実際のオブジェクトです。または、次のようにすることもできます。
String webUrl = "www.eg.com";
1行だけでなく、ソースファイル全体を解析する場合、関数の文法に基づくパーサーは、文字列に基づいてこれを行うよりも安全な選択です。
これらはあなたの文法では文字列リテラルになると思います。