私はRegexを持っています[\\.|\\;|\\?|\\!][\\s]
これは文字列を分割するために使用されます。しかし、それが引用符で囲まれている場合、それを分割することは望ましくありません。. ; ? !
RegEx引用符間のテキストを無視する
2
A
答えて
6
私はスプリットを使用せず、代わりにパターン&マッチャーを使用します。
デモ:生成
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "start. \"in quotes!\"; foo? \"more \\\" words\"; bar";
String simpleToken = "[^.;?!\\s\"]+";
String quotedToken =
"(?x) # enable inline comments and ignore white spaces in the regex \n" +
"\" # match a double quote \n" +
"( # open group 1 \n" +
" \\\\. # match a backslash followed by any char (other than line breaks) \n" +
" | # OR \n" +
" [^\\\\\r\n\"] # any character other than a backslash, line breaks or double quote \n" +
") # close group 1 \n" +
"* # repeat group 1 zero or more times \n" +
"\" # match a double quote \n";
String regex = quotedToken + "|" + simpleToken;
Matcher m = Pattern.compile(regex).matcher(text);
while(m.find()) {
System.out.println("> " + m.group());
}
}
}
:あなたが見ることができるように
> start
> "in quotes!"
> foo
> "more \" words"
> bar
が、それはまた、引用されたトークン内のエスケープ引用符を処理することができます。
0
ここでは、マッチで引用符を無視するために行っています。あなたの正規表現のためにこれを適応する
(?:[^\"\']|(?:\".*?\")|(?:\'.*?\'))*? # <-- append the query you wanted to search for - don't use something greedy like .* in the rest of your regex.
、あなたが
(?:[^\"\']|(?:\".*?\")|(?:\'.*?\'))*?[.;?!]\s*
関連する問題
- 1. php regexの空白で引用符を無視する
- 2. Regex、引用符で囲まれているパターンを無視する
- 3. Regex - カッコ内の引用符でテキストをキャプチャする方法
- 4. Regex - 引用符間の一重引用符の検索と置換
- 5. 引用符間のテキストを取得
- 6. fscanfの引用符を無視するには
- 7. Java正規表現質問 - 引用符を無視する
- 8. 引用符で囲まれた文字を無視するgrep
- 9. Regexを使って引用符の間に引用符を削除するには?
- 10. 引用符内にエスケープされた引用符でREGEXを使用する
- 11. C#Regex:一重引用符間のすべての一致(一重引用符を除く)
- 12. 引用符間のテキストを削除する
- 13. Regexなし:文字列間の引用符?
- 14. VIM Ruby Regexのシンタックスハイライト(引用符付き)
- 15. Javaの正規表現 - スペース上の分割文字列 - 引用符でスペースを無視して引用符
- 16. スカラーが入力の複数引用符を無視するようにする
- 17. 引用符間のテキストを選択しますか?
- 18. Java Regexバグ(一重引用符付き)
- 19. 正規表現で一重引用符を無視すると無視される
- 20. 引用符で囲まれたテキストはインクルードするが無視するようにする
- 21. Microsoft Excel:引用符で "引用符を含むテキスト"を抽出する方法
- 22. CSVファイルをPostgreSQLにインポートする際に引用符を無視しますか?
- 23. Pythonの正規表現での二重引用符と一重引用符の間のテキストを取得
- 24. 引用符のスタイルを変更するRegex
- 25. write-output - テキスト引用符間の非線形変数
- 26. URLの引用符が無効です
- 27. なぜvagrant ssh -cはコマンドの一重引用符を無視しますか?
- 28. Regex - すべての文字列を引っ張りますが、引用符の間にスペースを入れてください(引用符なし)
- 29. 引用符でテキストを取得
- 30. Regex:続く文字を無視する
を行うことができ、私はあなたが*解析*、ではない正規表現の分割について考え始める必要があると思います。これは、たとえいくつかの入力例で答える方が簡単です。 – deceze
解析はオプションですが、私はRegExでそれを行う方法を知りたいと思います。彼らはこれを行う方法ですか? –
RegExはこれを使用するツールではありません。使用するツールの種類にかかわらず、構文解析の代替手段ではありません。私はあなたがこのクエストをあきらめ、上記のように解析する必要があると思います。 –