私は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. Regex、引用符で囲まれているパターンを無視する
- 2. 引用符間のテキストを取得
- 3. Java正規表現質問 - 引用符を無視する
- 4. Regexを使って引用符の間に引用符を削除するには?
- 5. 引用符内にエスケープされた引用符でREGEXを使用する
- 6. 引用符間のテキストを削除する
- 7. VIM Ruby Regexのシンタックスハイライト(引用符付き)
- 8. Microsoft Excel:引用符で "引用符を含むテキスト"を抽出する方法
- 9. 引用符で囲まれたテキストはインクルードするが無視するようにする
- 10. CSVファイルをPostgreSQLにインポートする際に引用符を無視しますか?
- 11. 引用符でテキストを取得
- 12. 名前で並べ替えますが、引用符は無視しますか?
- 13. 引用符内のXML引用符
- 14. Perlで2つの引用符の間にテキストを削除しますか?
- 15. Python - 引用符で引用符を使用する
- 16. 一重引用符内の補間
- 17. Rubyで文字列の引用符と二重引用符をすべて無視するにはどうすればよいですか?
- 18. 引用符を引用する
- 19. 引用符内引用符問題
- 20. C#RegEx:パターンを無視しますか?
- 21. RMySQL間違った引用符でエスケープ
- 22. RegExは内側の中括弧内のテキストを無視します。
- 23. 引用符で値を抽出するためのRegexのヘルプpls
- 24. Regex一重引用符または二重引用符ではありません
- 25. grep - 引用符で囲まれたテキストを処理する
- 26. まっすぐ引用符を引用符で囲む
- 27. ラムダ引数チェックを無視する
- 28. Regex:二重引用符がゼロまたは奇数の後に一致する '、'
- 29. 大括弧で囲まれたテキストを一重引用符または二重引用符で囲みます
- 30. Regex異なる種類の一重引用符を置き換えよう
を行うことができ、私はあなたが*解析*、ではない正規表現の分割について考え始める必要があると思います。これは、たとえいくつかの入力例で答える方が簡単です。 – deceze
解析はオプションですが、私はRegExでそれを行う方法を知りたいと思います。彼らはこれを行う方法ですか? –
RegExはこれを使用するツールではありません。使用するツールの種類にかかわらず、構文解析の代替手段ではありません。私はあなたがこのクエストをあきらめ、上記のように解析する必要があると思います。 –