標籤:java Regex
本文主要測試字元類的用法,測試的結果作為注釋放在測試方法的後面。
package regularexpression;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.junit.Test;/** * 測試字元類; * @author yuncong * */public class TestRegularExpression {/** * 0. 單個字元匹配其本身 */@Testpublic void test0() {String regex = "d";String input = "1B2s-[[email protected]^";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * d *//** * 1. [C1C2...],表示任何C1,C2,...中的某個字元, * 其中Ci可以是是多個字元(如aB)、字元範圍(如A-Z、 * a-z、0-9)或字元類(如[A-Z]、\d) */@Testpublic void test1() {// 多個字元String regex = "[abcd]";String input = "1B2s23d3";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * d */@Testpublic void test2() {// 字元範圍 String regex = "[A-za-z]";String input = "1B2s23d3";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * B * s * d */@Testpublic void test3() {// 字元類 String regex = "[[A-za-z][0-9]]";String input = "1B2s23d3";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * 1 * B * 2 * s * 2 * 3 * d * 3 *//** * 2. [^...],表示字元類的補集中的某個字元 */@Testpublic void test4() {String regex = "[^A-za-z]";String input = "1B2s23d3";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * 1 * 2 * 2 * 3 * 3 *//** * 如果字元類包含^,^可以放在除開始位置之外的任何位置, * 也就是說,只有當^放在開始位置時,才具有取補的功能 */@Testpublic void test5() {// 第二個^就是一個普通的匹配字元String regex = "[^0-9^]";String input = "1B2s2^[email protected]^3";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * B * s * d * @ *//** * 如果字元類包含-,-必須是第一項或者最後一項 */@Testpublic void test6() {String regex = "[-0-9]";String input = "[email protected]^";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * 2 * - * 2 * 3 * 3 *//** * 如果字元類中包含[,必須放在第一項並且轉義 */@Testpublic void test7() {String regex = "[\\[0-9]";String input = "1B2s-[[email protected]^";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * 1 * 2 * [ * 2 * 3 * 3 *//** * 3. [...&&...],兩個字元類的交集 */@Testpublic void test8() {String regex = "[abcd&&a-z]";String input = "1B2s-[[email protected]^";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * d *//** * 4. \w, 一個詞語字元類(也就是一個單詞中可能存在的字元), * 等價於[A-Za-z0-9_] */@Testpublic void test9() {String regex = "\\w";String input = "1B2s-[23d李@3^";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * 1 * B * 2 * s * 2 * 3 * d * 3 *//** * 5. \p{name}, 表示一個命名字元類 */@Testpublic void test10() {String regex = "\\p{Upper}";String input = "1B2s-[23d李@3^";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);while (matcher.find()) {String output = matcher.group();System.out.println(output);}}/** * 輸出: * B */}
Java 測試Regex(一)