Matcher를 사용하여 각 그룹을 개별적으로 교체하려면 어떻게해야합니까?

eric.itzhak

내가 찾은 모든 예는 사람들이 정규식 패턴을 검색하고 찾은 모든 그룹을 특정 값 또는 검색된 문자열의 알려진 수의 그룹으로 대체해야하는 경우에 대한 것입니다.

하지만 제 경우에는 발견 된 값에 따라 각 그룹을 변경해야합니다. 변경된 각 결과 값을 어떻게 변경할 수 있습니까?

이것이 내가 시도한 것입니다.

 Pattern pattern = Pattern.compile(DEFINITION_WITH_OR);
 Matcher matcher = pattern.matcher(s);
 StringBuffer sb = new StringBuffer();
  while (matcher.find()){

  String ss = matcher.group();

    /*Some string manupilation*/

  // matcher.appendReplacement(sb, bestMatchedDefinition);
  // matcher.appendReplacement(sb,Matcher.quoteReplacement(ss));
  // s = s.replace(s.substring(matcher.start(),matcher.end()),ss);

}

내가 원하는 것은 발견 된 모든 그룹을 반복하고 발견 된 그룹에 대해 몇 가지 작업을 수행하고 해당 그룹 만 편집하는 것입니다. 실행하기 전에 콘텐츠 및 그룹 수를 알 수 없습니다.

지금까지의 모든 시도가 모든 것을 변경했거나 전혀 변경하지 않았거나 제안 사항이 있습니까?

문자열로하는 일은로 분할 |하고 가장 짧은 부분을 가져 와서 중괄호를 제거하는 것입니다. 예제 입력 문자열 : 참고 : 다음 입력 문자열은 최종 결과가 무엇인지 보여주기위한 단순화입니다. 전체 문자열에는 많은 부분이 있습니다. 더 성가신 문자는 DEFINITION_WITH_OR패턴을 사용하여 지 웠습니다.

 a commissioned general officer in the United States Army,
 [[United States Marine Corps|Marine Corps]],
 or [[United States Air Force|Air Force]] superior to a lieutenant general.
 A general is equal in rank or grade to a four star admiral. In the US Army,
 a general is junior to a general of the army. In the US Marine Corps,
 a general is the highest rank of commissioned officer. In the US Air Force,
 a general is junior to a general of the air force.

다음과 같이 출력해야합니다.

 a commissioned general officer in the United States Army,
 Marine Corps,
 or Air Force superior to a lieutenant general.
 A general is equal in rank or grade to a four star admiral. In the US Army,
 a general is junior to a general of the army. In the US Marine Corps,
 a general is the highest rank of commissioned officer. In the US Air Force,
 a general is junior to a general of the air force.

공군해병대 조금 신경 쓰세요

eric.itzhak

글쎄, Joop의 답변 덕분에 다음 코드를 추가하지 않았다는 것을 깨달았습니다.

matcher.appendTail(sb);
s = sb.toString();

while 루프 후 라인 matcher.appendReplacement(sb,Matcher.quoteReplacement(ss));이 트릭을 수행했습니다. 어떤 이유로도 matcher.appendReplacement(sb,ss);효과가 있었지만 훨씬 느립니다. 누구든지 이유를 알고 댓글을 달 수 있다면 좋을 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

GROUP BY를 사용하여 각 그룹에 대해 하나가 아닌 여러 개체를 표시하려면 어떻게해야합니까?

분류에서Dev

동일한 패널의 여러 인스턴스를 만들고 각각의 속성을 개별적으로 변경하려면 어떻게해야합니까?

분류에서Dev

모든 카테고리를 반복하여 각 카테고리 게시물을 개별적으로 표시하려면 어떻게해야합니까?

분류에서Dev

숫자와 별표 기호를 사용하여 사각형을 만들려면 어떻게해야합니까?

분류에서Dev

onClickListener를 각 ImageView에 개별적으로 추가하려면 어떻게해야합니까?

분류에서Dev

각 접을 수있는 항목을 개별적으로 표시하려면 어떻게해야합니까? (MVC)

분류에서Dev

값을 기준으로 개체 키를 그룹화하려면 어떻게해야합니까?

분류에서Dev

Postgres에서 다른 그룹으로 그룹화 된 최대 값을 사용하여 전체 레코드를 검색하려면 어떻게해야합니까?

분류에서Dev

라디오 버튼을 시각적으로 그룹화하려면 어떻게해야합니까?

분류에서Dev

개체 키별로 그룹화 할 개체를 변환하려면 어떻게해야합니까?

분류에서Dev

반응 후크를 사용하여 텍스트 색상을 개별적으로 변경하려면 어떻게해야합니까?

분류에서Dev

keras를 사용하여 각각의 새로운 예측에 대해 LSTM을 다시 훈련하려면 어떻게해야합니까?

분류에서Dev

하나의 div에있는 각 문자에 개별적으로 스타일을 적용하려면 어떻게해야합니까?

분류에서Dev

Windows를 개별적으로 확장하려면 어떻게해야합니까?

분류에서Dev

Javascript 또는 lodash를 사용하여 두 개체의 속성을 얕게 비교하려면 어떻게해야합니까?

분류에서Dev

각 JSON 객체를 분리하고 JavaScript에서 배열로 그룹화하려면 어떻게해야합니까?

분류에서Dev

bwareaopen을 사용하여 작은 개체를 삭제하려면 어떻게해야합니까?

분류에서Dev

MouseMove 기능을 사용하여 개체를 이동하려면 어떻게해야합니까?

분류에서Dev

MASM을 사용하여 알파벳 문자를 대각선으로 인쇄하려면 어떻게해야합니까?

분류에서Dev

Spine.js의 Ajax 통합을 사용하여 각 API 호출에 추가 매개 변수를 전달하려면 어떻게해야합니까?

분류에서Dev

각 개체에 대해 여러 개를 계산하도록 게임을 비활성화하려면 어떻게해야합니까?

분류에서Dev

RSpec을 사용하여 전역 적으로 메서드를 스텁하려면 어떻게해야합니까?

분류에서Dev

rsync를 사용하여 기본적으로 파일을 제외하려면 어떻게해야합니까?

분류에서Dev

`each_index`를 사용하여 각 요소의 색인을 인쇄하려면 어떻게해야합니까?

분류에서Dev

R에서 각 그룹의 항목 수를 기준으로 정렬 된 그룹화 된 데이터를 플로팅하려면 어떻게해야합니까?

분류에서Dev

클래스의 각 인터페이스에 대해 일부 함수를 개별적으로 정의하려면 어떻게해야합니까?

분류에서Dev

CSS를 사용하여 플렉스 레이아웃에서 사각형 버튼을 얻으려면 어떻게해야합니까?

분류에서Dev

JavaScript를 사용하여 텍스트 조각에서 배열로 URL을 추출하려면 어떻게해야합니까?

분류에서Dev

awk를 사용하여 열별로 두 파일을 병합하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    GROUP BY를 사용하여 각 그룹에 대해 하나가 아닌 여러 개체를 표시하려면 어떻게해야합니까?

  2. 2

    동일한 패널의 여러 인스턴스를 만들고 각각의 속성을 개별적으로 변경하려면 어떻게해야합니까?

  3. 3

    모든 카테고리를 반복하여 각 카테고리 게시물을 개별적으로 표시하려면 어떻게해야합니까?

  4. 4

    숫자와 별표 기호를 사용하여 사각형을 만들려면 어떻게해야합니까?

  5. 5

    onClickListener를 각 ImageView에 개별적으로 추가하려면 어떻게해야합니까?

  6. 6

    각 접을 수있는 항목을 개별적으로 표시하려면 어떻게해야합니까? (MVC)

  7. 7

    값을 기준으로 개체 키를 그룹화하려면 어떻게해야합니까?

  8. 8

    Postgres에서 다른 그룹으로 그룹화 된 최대 값을 사용하여 전체 레코드를 검색하려면 어떻게해야합니까?

  9. 9

    라디오 버튼을 시각적으로 그룹화하려면 어떻게해야합니까?

  10. 10

    개체 키별로 그룹화 할 개체를 변환하려면 어떻게해야합니까?

  11. 11

    반응 후크를 사용하여 텍스트 색상을 개별적으로 변경하려면 어떻게해야합니까?

  12. 12

    keras를 사용하여 각각의 새로운 예측에 대해 LSTM을 다시 훈련하려면 어떻게해야합니까?

  13. 13

    하나의 div에있는 각 문자에 개별적으로 스타일을 적용하려면 어떻게해야합니까?

  14. 14

    Windows를 개별적으로 확장하려면 어떻게해야합니까?

  15. 15

    Javascript 또는 lodash를 사용하여 두 개체의 속성을 얕게 비교하려면 어떻게해야합니까?

  16. 16

    각 JSON 객체를 분리하고 JavaScript에서 배열로 그룹화하려면 어떻게해야합니까?

  17. 17

    bwareaopen을 사용하여 작은 개체를 삭제하려면 어떻게해야합니까?

  18. 18

    MouseMove 기능을 사용하여 개체를 이동하려면 어떻게해야합니까?

  19. 19

    MASM을 사용하여 알파벳 문자를 대각선으로 인쇄하려면 어떻게해야합니까?

  20. 20

    Spine.js의 Ajax 통합을 사용하여 각 API 호출에 추가 매개 변수를 전달하려면 어떻게해야합니까?

  21. 21

    각 개체에 대해 여러 개를 계산하도록 게임을 비활성화하려면 어떻게해야합니까?

  22. 22

    RSpec을 사용하여 전역 적으로 메서드를 스텁하려면 어떻게해야합니까?

  23. 23

    rsync를 사용하여 기본적으로 파일을 제외하려면 어떻게해야합니까?

  24. 24

    `each_index`를 사용하여 각 요소의 색인을 인쇄하려면 어떻게해야합니까?

  25. 25

    R에서 각 그룹의 항목 수를 기준으로 정렬 된 그룹화 된 데이터를 플로팅하려면 어떻게해야합니까?

  26. 26

    클래스의 각 인터페이스에 대해 일부 함수를 개별적으로 정의하려면 어떻게해야합니까?

  27. 27

    CSS를 사용하여 플렉스 레이아웃에서 사각형 버튼을 얻으려면 어떻게해야합니까?

  28. 28

    JavaScript를 사용하여 텍스트 조각에서 배열로 URL을 추출하려면 어떻게해야합니까?

  29. 29

    awk를 사용하여 열별로 두 파일을 병합하려면 어떻게해야합니까?

뜨겁다태그

보관