среда, 4 января 2012 г.


Регулярные выражения java api / regular expressions java api

Регулярные выражения в java.
1. Замена одного или нескольких сиволов или цифр.
. - один любой символ.
.* - любой символ повторяется сколько угодно раз.
\\(любой символ) - два слеша в java используются для указания какой сивол нужно искать, т.е. после двух обратных слешов вы указываете определнный символ, и поиск будет выполнен по этому сивмволу. В java  некоторые буквы, определены как класс некоторых символов, например:
\\d - любая цифра (0-9)
\\d* - любая цифра повторяется ноль или несколько раз
\\w - люая буква
\\w+ - любая буква повторяется один или несколько раз
\\* - будет искаться символ звездочки
\\? - будет искаться символ знака вопроса
Пример:
Если у вас есть часть строки, и вторую часть вам нужно задать любыми 
символами, то просто создайте строку String с известной частью строки а 
неизвестные буквы замените точкой:
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Testing {
    public static void main(String[] args) {
        String pattern = "......metal";
         String[] array = new String[4];
        array[0] = "heavy metal";        //подходит
        array[1] = "dark metal";        //не подходит
        array[2] = "death metal";        //подходит
        array[3] = "progressive metal";    //не подходит
        Pattern p = Pattern.compile(pattern) ;
        Matcher m;
        for (int i = 0; i < array.length; i++) {
            m = p.matcher(array[i]) ;
            System.out.println(array[i] + " = "+ m.matches()) ;
        }
    }
}
Программа выведет:
heavy metal = true
dark metal = false
death metal = true
progressive metal = false

2. Динамичкое формирование регулярного выражения.
Если вы хотите формировать строку для регулярного выражения динамически, то:
Пример:
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Testing {
    public static void main(String[] args) {       
        String symbol_1 = "*";
        String symbol_2 = "?";
        String symbol_3 = "\\";
        String symbol_4 = "|";
        //формируем кодом строку "\\*|\\?", данная строка будет означать что необходимо искать символ звуздочки "*" или символ знака вопроса "?".
        // Два символа обратного слеша в java  используются для указания какой сивол нужно искать, т.е. после двух обратных слешов вы              
        // указываете определнный символ, и поиск будет выполнен по этому сивмволу.
        String pattern = symbol_3 + symbol_1 + symbol_4 + symbol_3 + symbol_2;
        System.out.println(pattern) ;
        String s = "?go*do**that*";       
        Pattern p = Pattern.compile(pattern) ; 
        String[] array = p.split(s) ;
        System.out.println(Arrays.deepToString(array)) ;       
    }
}


Комментариев нет:

Отправить комментарий