2014-07-17 2 views
0

preg_grep()에 해당하는 Java가 있는지 누군가가 알 수 있습니까? 또는 동일한 것을 성취 할 수있는 좋은 방법을 제공합니까?PHP preg_grep에 해당하는 Java

preg_grep()과 같이 입력 배열의 요소와 일치하는 문자열을 입력 배열의 인덱스와 함께 반환해야합니다.

+0

http://stackoverflow.com/questions/5084419/java-preg-match-array – Simon

+0

나중에 참조 할 수 있도록 정규 표현식에 대한 질문은 언어/풍미 이외에도 [tag : regex] 태그가 있어야합니다. 태그 ([태그 : 자바], [태그 : PHP] 등). [tag : qregularexpression] 태그는 사용하지 않는 특정 구현을 나타냅니다. –

답변

0

정확히 일치하는 것은 없습니다. 그러나 String#matches(String) 함수를 사용하여 문자열이 주어진 패턴과 일치하는지 테스트 할 수 있습니다. 예를 들어 :

String s = "stackoverflow"; 
s.matches("stack.*flow"); // <- true 
s.matches("rack.*blow"); // <- false 

당신이 일치하는 인덱스와 결과 배열을 원하는 경우에, 당신은 문자열의 당신의 주어진 입력 배열을 통해 루프, 일치를 확인하고 그 결과 배열에 루프의 현재 인덱스를 추가 할 수 있습니다.

당신은 String.matches()를 사용하여 배열의 반복, 기능의이 종류를 사용할 수
0

:

public static List<Integer> preg_grep(String pattern, List<String> array) 
{ 
    List<Integer> indexes = new ArrayList<Integer>(); 

    int index = 0; 
    for (String item : array) { 
     if (item.matches("ba.*")) { 
      indexes.add(index); 
     } 
     ++index; 
    } 

    return indexes; 
} 

Ideone Example

+0

고마워, 내 일을해야한다고 생각해. 나는 자바에 익숙하지 않다. 스크립트 실행을 자동화하기 위해 나의 PHP 프로젝트를 자바로 포팅해야한다. 나는 자바에 익숙하지 않기 때문에, 나는 당신의 솔루션을 테스트하는 데 약간의 시간이 걸릴 것이다. – user3127090

0

같은 것에 대해 어떻게 :

private static String[] filterArrayElem(String[] inputArray) { 
    Pattern pattern = Pattern.compile("(^a.*)"); 

    List<String> resultList = new ArrayList<>(); 
    for (String inputStr : inputArray) { 
     Matcher m = pattern.matcher(inputStr); 
     if (m.find()) { 
      resultList.add(m.group(0)); 
     } 
    } 
    return resultList.toArray(new String[0]); 
} 

그런 다음에 사용할 수 있습니다 다음과 같은 방법 :

String [] input = { "apple", "banana", "apricot"}; 
    String [] result = filterArrayElem(input);