문자열에서 두 번째로 지난 밑줄 후 모든 캐릭터를 얻기 위해 두 번째 - 마지막으로 밑줄 후 모든 숫자를 grep을하는이 정규식은 어떻게 보여야정규식 내가 원하는
Input Output
PART1_PART2_PART3_G2010 PART3_G2010
에게 어떤 생각을 수행 할 수있는 방법 어떤 아이디어 like
문자열에서 두 번째로 지난 밑줄 후 모든 캐릭터를 얻기 위해 두 번째 - 마지막으로 밑줄 후 모든 숫자를 grep을하는이 정규식은 어떻게 보여야정규식 내가 원하는
Input Output
PART1_PART2_PART3_G2010 PART3_G2010
에게 어떤 생각을 수행 할 수있는 방법 어떤 아이디어 like
입력 내용에 밑줄이 3 개인 경우 Andrea Spadaccini의 답변이 작동합니다. 문제는 그 전에 와서 얼마나 많은 밑줄의 두 번째 밑줄 독립 후 모든 참조, 더 일반적으로 의미하는 경우, 정규 표현식은 끝이 같은 ($)에서 검색 할 필요가 :
_([^_]*_[^_]*)$
첫 번째 N 밑줄이 아닌 밑줄. 반복. 마지막 문자를 그룹화하십시오. 안드레아 Spadaccini의 정규식처럼
[^_]*_[^_]*_(.*)
처음부터 두 번째 밑줄 뒤에 오는 모든 것을 캡처합니다. 예제에서 이것은 동일하지만 임의의 입력에 대해서는 그렇지 않습니다. – leemes
.*_([^_]*_[^_]*)$
는 밑줄 사이 부분의 특정 총 개수에 바인딩되지 않습니다.
죄송합니다.이 정규 표현식을 설명해주십시오. – lisa
첫 번째 두 기호'. * '는 모든 문자를 캡처하므로'.'는 임의의 문자 하나를 캡처하고 '*'는 '가능한 한 많이'에 대한 수량 기호입니다. 그런 다음 밑줄이 나타납니다. 대괄호 안의 표현식은 밑줄 사이의 두 부분을 캡처해야합니다. 처음에는 모든 밑줄 문자를 다시 캡처합니다. 이것은 대괄호를 사용하고'(^') 밑줄 =>'[^ _]'을 제외한 모든 문자를 원한다고 말합니다. 가장 마지막 기호'$'는 입력 문자열의 끝을 정의합니다. 이 부분을 처음부터'. *'로 남겨 두는 것이 가능하다고 생각합니다. – leemes
제목과 일관성없는 질문. 제목에서 마지막으로 바람직하지 않은 부분 뒤에 오는 모든 숫자를 원하지만 질문에서 두 번째 밑줄 뒤에있는 모든 것을 원합니다. 마음을 정하십시오! :) –
아니요, 그녀는 두 번째 마지막 밑줄 뒤에 모든 것을 원한다고 말했습니다. 이것이 처음부터 계산 된 두 번째 것임을 말하면이 예에서는 동일하지만 임의 입력에 대해서는 틀린 경우입니다. – leemes