">" または "|" のパターンに一致する適切な正規表現は何でしょうか? 次の例のように最低 3 回出現しますか? ">" または "|" のいずれかに一致させたい (両方ではない) 指定されたテキストの間に不規則な間隔があります。
一致する必要があります
「a>b>c>d>e」
" a|b|c | d |e"
一致するべきではありません
「a>b>c」(2つの「>」のみ)
" a|b>c | d |e" (">" または "|" のいずれでもない)
式をテストするサンプル Java コード (バックスラッシュのみがエスケープされます)
public static void main(String[] args) {
List<String> patterns = new ArrayList<String>();
patterns.add("/((\\s*\\w+\\s*>\\s*){3,}|(\\s*\\w+s*\\|\\s*){3,})\\w/g");
patterns.add("^( ([\\w\\s]*>){3,} | ([\\w\\s]*\\|){3,} )[\\w\\s]*$");
patterns.add("/(>|\\|)[^>\\|]*\\1[^>\\|]*\\1/");
patterns.add("/[\\w ]*([>|])(?:[\\w ]*\\1){2,}[\\w ]*/");
List<String> test = new ArrayList<String>();
test.add("a > b > c > d");
test.add("a >b> c> d");
test.add("a>b>c>d");
test.add("a>b>c");
for (String s : test) {
for (int i = 0; i < patterns.size(); i++) {
System.out.println(s + "[Pattern " + i + "] " + s.matches(patterns.get(i)));
}
}
}