내가 플레이하는 머드에서 몹 룸 설명은 다양한 변형으로 시작할 수 있습니다. 나는 가능한 오직 시작 플래그 중 하나가 아니라 군중의 방 설명 만 캡처하는 정규 표현식을 작성하려고합니다. 이것은 내가 지금까지 가지고있는 것입니다 :정규 표현식 패턴 완성하기
^\((?:[ACDGHIXRSTUW()]+|\s?\(Angry\))\)?\s?(.*)$
폭도가 시작 플래그를 갖지 않을 때까지 작동합니다. 다음은 유사 콘텐츠에 대한 예입니다.
(H) (Angry) A mob is here.
(A)(W)(R) A mob is also here.
Another mob is here.
이는 폭도가 나타날 수있는 세 가지 방법입니다. 기본적으로 범위 부분의 모든 문자는()로 둘러싸인 플래그가 될 수 있습니다. 단일 문자 플래그에는 공백이 없음) 다음에 공백이 없습니다. (단, Angry) 앞에는 공백이 있습니다.
문제점은 마지막 mob를 캡처하지 않고 캡쳐하고 있다는 것입니다. "(Angry)"첫 번째 군중에서. 나는 정규식에 대한 공정한 이해를 일반적으로 가지고 있다고 생각하지만, 내가 잘못하고있는 것을 볼 수는 없으며, 심지어 그것을 처리하는 가장 효율적인 방법이 아닐 수도있다.
편집 : 명확하지 않은 경우 마지막 이후의 모든 항목을 캡처하거나 플래그가없는 경우 처음부터 캡처하고 싶습니다.
명령은 '^ 경우 더 나은 것 (? :. * \)) (?. *)') –
사실, 원래는 hwnd의 대답을 보았지만 Avinash Raj의 버전 (작은 수정 포함)이 더 잘 작동합니다! 다시 한 번 감사드립니다! – Josh
@AvinashRaj 좋은 지적. 감사. –