|
Класс 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(5, 29);
JTextField pattern = new JTextField(35);
JButton search = new JButton("Search");
JButton newSearch = new JButton("New Search");
JTextArea result = new JTextArea(5, 29);
public TestPatterns() {
super("Test Patterns");
setSize(430, 320);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = getContentPane();
GridLayout grid = new GridLayout(3, 1);
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 filename) throws 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.println( matcher.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
}
}
|
|