Java и PHP – preg_match

Каков точный эквивалент PHP preg_match ($ pattern, $ text) в JAVA?

У меня есть другой результат для того же ввода текста, а также шаблон регулярного выражения в следующей программе php & java.

Regex – \ b (?: (?> Cancer () | problem () | (?> \ 1 | \ 2) \ w +) \ b \ W *?) {0,3} \ 1 \ 2 действительно соответствует термину – «проблема рака» в пределах количества слов. вот это {0,3}

PHP

<?php $text = "doctors found many cancer related chest problems in japan during second world war."; $pattern = "/\\b(?:(?>cancer()|problem()|(?>\\1|\\2)\\w+)\\b\\W*?){0,3}\\1\\2/i"; if (preg_match($pattern, $text)) { echo 'matched<br>'; } else { echo 'not matched<br>'; } ?> 

Каков точный эквивалент реализации JAVA вышеуказанной программы?

Я получил другой результат для того же ввода текста, а также для шаблона регулярного выражения в следующей программе java.

ЯВА

 package com.regex.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class MatchTermWithin_1 { final static String string = "doctors found many cancer related chest problems in japan during second world war."; final static String regex = "\\b(?:(?>cancer()|problem()|(?>\\1|\\2)\\w+)\\b\\W*?){0,3}\\1\\2"; public static void main(String[] args) { // TODO Auto-generated method stub final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); final Matcher matcher = pattern.matcher(string); if (matcher.find()) { System.out.println("Full match: " + matcher.group(0)+"\n"); for (int i = 0; i <= matcher.groupCount(); i++) { System.out.println("Group " + i + ": " + matcher.group(i)); } System.out.println("\n"); }else { System.out.println("not found"); } if(matcher.matches()) { System.out.println("matched "+"\n"); }else { System.out.println("not matched " + "\n"); } } } 

Я сделал решение для этого. надеюсь, что это может быть ключом к другим знаниям в Java и PHP.

 package com.ae.text.processor; import org.apache.commons.lang3.ArrayUtils; public class ProximitySearch { public static boolean MatchTermWithinNumberOfWords(String text, String term, int distance) { String[] term_words = term.split(" "); String[] right_side_array; String right_side = ""; String tmp = ""; if (text.contains(term_words[0])) { String[] splitted_search_words = text.split(term_words[0]); for (int i = 0; i < splitted_search_words.length; i++) { if (i == 1) { right_side = splitted_search_words[1]; if (right_side.contains(term_words[1])) { right_side_array = right_side.split(" "); int indexOfSecondTerm = ArrayUtils.indexOf(right_side_array, term_words[1]); for (int j = 0; j <= indexOfSecondTerm; j++) { tmp = tmp + " " + right_side_array[j]; } if (indexOfSecondTerm <= distance) { printMatched(term_words[0] + tmp); return true; } else { return false; } } } } } return false; } public static void printMatched(String mathed) { System.out.println(mathed); } public static void main(String[] args) { String text = "doctors found many cancer related chest problems in japan durring second world war."; String term = "cancer problems"; int distance = 3; System.out.println(MatchTermWithinNumberOfWords(text, term, distance)); } }