Класс Matcher в java.util.regex пакета ищет регулярного выражения в тексте.

Приложение Java написано ниже демонстрирует использование Find () и группы () методы класса Matcher.


import java.util.regex.*;



public class ShowWords {

    

    public static void main(String[] arguments) {

        Pattern pattern = Pattern.compile("\\S+");

        Matcher matcher = pattern.matcher(arguments[0]);

        while (matcher.find())

            System.out.println("[" + matcher.group() "]");

    }

}

Swing приложение, написанное ниже демонстрирует использование Split () метод класса String. Программа ищет на трех линиях данных, цена акций, которые используют три разных разделителей: /, -, и% символов.


import java.util.regex.*;



public class SplitData {

    String[] input = "320/10.50/Dec 11 2002/39.95",

        "110-4.25-Dec 15 2002-39.95",

        "8%54.00%Dec 4 2002%0" };



    public SplitData() {

        for (int i = 0; i < input.length; i++) {

            String[] piece = input[i].split("[-/%]");

            for (int j = 0; j < piece.length; j++)

                System.out.print(piece[j"\t");

            System.out.print("\n");

        }

    }



    public static void main(String[] arguments) {

        SplitData app = new SplitData();

    }

}

Swing приложение, написанное ниже имеет текста и модель в качестве входных данных и отображать ли модель была найдена в тексте.


import java.awt.*;

import java.awt.event.*;

import java.util.regex.*;

import javax.swing.*;



public class TestPatterns extends JFrame implements ActionListener {

    JTextArea text = new JTextArea(529);

    JTextField pattern = new JTextField(35);

    JButton search = new JButton("Search");

    JButton newSearch = new JButton("New Search");

    JTextArea result = new JTextArea(529);

 

    public TestPatterns() {

        super("Test Patterns");

        setSize(430320);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container pane = getContentPane();

        GridLayout grid = new GridLayout(31);

        pane.setLayout(grid);

        // set up the top row

        JLabel textLabel = new JLabel("Text: ");

        JPanel row1 = new JPanel();

        row1.add(textLabel);

        JScrollPane scroll = new JScrollPane(text,

            ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,

            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

        row1.add(scroll);

        // set up the middle row

        JPanel row2 = new JPanel();

        JLabel patternLabel = new JLabel("Pattern: ");

        row2.add(patternLabel);

        row2.add(pattern);

        search.addActionListener(this);

        newSearch.addActionListener(this);

        row2.add(search);

        row2.add(newSearch);

        // set up the bottom row

        JPanel row3 = new JPanel();

        JLabel resultLabel = new JLabel("Result: ");

        row3.add(resultLabel);

        result.setEditable(false);

        JScrollPane scroll2 = new JScrollPane(result,

            ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,

            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

        row3.add(scroll2);

        // set up the content pane

        pane.add(row1);

        pane.add(row2);

        pane.add(row3);

        setContentPane(pane);

        setVisible(true);

    }



    public void actionPerformed(ActionEvent evt) {

        Object source = evt.getSource();

        if (source == search) {

            checkPattern();

        else {

            pattern.setText("");

            result.setText("");

        }

    }



    private void checkPattern() {

        try {

            if (Pattern.matches(pattern.getText(), text.getText()))

                result.setText("That pattern was found");

            else

                result.setText("That pattern was not found");

        catch (PatternSyntaxException pse) {

            result.setText("Regex error: " + pse.getMessage());

        }

    }



    public static void main(String[] arguments) {

        TestPatterns app = new TestPatterns();

    }

}

Эта подсказка показывает способ проверки строки в связи с регулярным выражением. java.util.regex пакета используются регулярные выражения для соответствующих операций.

В данном примере строка ввода (inputStr) проверяется с регулярным выражением (rgString).


import java.util.regex.Matcher;

import java.util.regex.Pattern;



public class RegularExpExp {

    

    public static void main(String[] args) {

        

        String rgString = "write your regulat expression here";

        CharSequence inputStr = "write your input string that need to be validated";

        Pattern pattern = Pattern.compile(rgString);

        Matcher matcher = null;

        matcher = pattern.matcher(inputStr);

        

        if (matcher.matches()) {

            System.out.println("Matched");

        else {

            System.out.println("Not Matched");

        }

    }

}

Этот совет Java приведен пример Quintessential поиск по регулярному выражению и замену программы. Эта программа находит все совпадения с регулярным выражением и заменяет их на другую строку.


import java.util.regex.*;



public class BasicReplace {

    

    public static void main(String[] args) {

        

        CharSequence inputStr = "p q r p q r ";

        String patternStr = "q";

        String replacementStr = "s";

        

        // Compile regular expression

        Pattern pattern = Pattern.compile(patternStr);

        

        // Replace all occurrences of pattern in input

        Matcher matcher = pattern.matcher(inputStr);

        String output = matcher.replaceAll(replacementStr);

        // p s r p s r

    }

}

Этот совет Java иллюстрирует метод применения регулярных выражений от содержимого файла. Соответствующих процедур в java.util.regex требует, чтобы входной быть CharSequence объект. Этот совет реализует метод, который эффективно возвращает содержимое файла в CharSequence объект.


    // Converts the contents of a file into a CharSequence

    public CharSequence fromFile(String filenamethrows IOException {

        FileInputStream input = new FileInputStream(filename);

        FileChannel channel = input.getChannel();

    

        // Create a read-only CharBuffer on the file

        ByteBuffer bbuf = channel.map(FileChannel.MapMode.READ_ONLY, 0(int)channel.size());

        CharBuffer cbuf = Charset.forName("8859_1").newDecoder().decode(bbuf);

        return cbuf;

    }

Вот пример кода, использующего выше метода:


    try {

        // Create matcher on file

        Pattern pattern = Pattern.compile("pattern");

        Matcher matcher = pattern.matcher(fromFile("infile.txt"));

    

        // Find all matches

        while (matcher.find()) {

            // Get the matching string

            String match = matcher.group();

        }

    catch (IOException e) {

    }

Приложение Java написано ниже используются регулярные выражения для поиска и отображения гиперссылок, содержащихся в веб-страницу. После компиляции файла, вы должны сохранить веб-страницу в ту же папку, которая содержит ShowLinks.class.


import java.io.*;

import java.util.regex.*;



public class ShowLinks {

    public static void main(String[] arguments) {

        if (arguments.length < 1) {

            System.out.println("Usage: java ShowLinks [page]");

            System.exit(0);

        }

        String page = loadPage(arguments[0]);

        Pattern pattern = Pattern.compile("<a.+href=\"(.+?)\"");

        Matcher matcher = pattern.matcher(page);

        while (matcher.find()) {

            System.out.printlnmatcher.group(1));

        }

    }



    private static String loadPage(String name) {

        StringBuffer output = new StringBuffer();

        try {

            FileReader file = new FileReader(name);

            BufferedReader buff = new BufferedReader(file);

            boolean eof = false;

            while (!eof) {

                String line = buff.readLine();

                if (line == null)

                    eof = true;

                else

                    output.append(line + "\n");

            }

            buff.close();

        catch (IOException e) {

            System.out.println("Error -- " + e.toString());

        }

        return output.toString();

    }

}

Этот совет Java приведен пример квинтэссенции регулярной программы поиска выражения. Разработчик может использовать этот код для поиска совпадений в строке с использованием регулярных выражений.


    import java.util.regex.*;

    

    public class BasicMatch {

        public static void main(String[] args) {



            // Compile a regular expression

            String patternStr = "b";

            Pattern pattern = Pattern.compile(patternStr);

    

            // Check for the existence of the pattern

            CharSequence inputStr = "a b c b";

            Matcher matcher = pattern.matcher(inputStr);

            boolean matchFound = matcher.find();    // true

    

            // Retrieve matching string

            String match = matcher.group();         // b

    

            // Retrieve indices of matching string

            int start = matcher.start();            // 2

            int end = matcher.end();                // 3

            // the end is index of the last matching character + 1

    

            // Find the next occurrence

            matchFound = matcher.find();            // true

        }

    }