2014-11-20 2 views
0

나는 어디서부터 시작할지를 고민하고있다. 나는이 일을 상당히 솔직하게하는 정규 표현식이 있다고 생각한다. 문자열에있는 별표를 제거하고 싶습니다.문자열 정리를위한 정규식

예 문자열 :

test="AM*BE*3***LAST****~" 

나는 그것이 반복 기호가없는 끝 부분 만 떨어져 별표 트림 싶습니다. 그래서 변수에 결과 값은 다음과 같습니다 나는 루비에서 할 수있는 유사한 일이

s/\*+~+/~/; 

있습니까 :

test="AM*BE*3***LAST~" 

펄에서 내가 이것을 사용 할 수 있었다? 어떤 이유로 든 그것을 찾기 위해 고심하고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.

test = "AM*BE*3***LAST****~" 

test.gsub!(/\*+~$/, '~') 
# => "AM*BE*3***LAST~" 

또는 당신이 더 유연한 정규식을 사용할 수있는 일치 : 다음 물결 ~ 모든 일치를 대체 할 gsub 방법을 사용

/\*+~$/ 

:

+1

당신은''AM * *** * *** *********************************************************************************** 답은 마지막 문자가'~'라고 가정합니다. 그것은 유선이 될 것인가 아니면 별표가 아닌 다른 문자가 뒤에 올 수 있습니까? –

답변

2

이 정규식을 사용할 수 있습니다 * 이후 줄 끝까지의 글자 수 :

/\*+([^*])+$/ 

그런 다음 교체로 첫 번째 캡처 그룹 ($1)를 사용 :

test.gsub(/\*+([^*])+$/) { $1 } 
+0

완벽하게 작동했습니다. 고맙습니다! – MechDog

+0

나는 마지막 글자가 바뀌면,이 경우에는 줄 끝 표시가 끝난 이후로 항상 물결표가 표시되지 않는다. 의회가 보험을 위해 회사 간 데이터 교환을 '단순화'하기 위해 채택한 ASC X12 파일 형식의 일부입니다. – MechDog

1

당신은 Rubular를 사용하여 정규식을 테스트하고 페이지 아래 참조에 따라 필요한 달성하기 위해 시도 할 수 있습니다.

http://rubular.com/

+0

나는 그것을 밖으로 검사 할 것이다, 고마워! – MechDog

+0

좋은 의견입니다! .. –

2

루비의 String 클래스는 우리가 매개 변수로 정규 표현식을 사용 할 수있는 [] 방법을 가지고 있습니다. 또한 다음과 같이 지정할 수 있습니다.

foo = "AM*BE*3***LAST****~" 
foo[/\*+~+$/] = '~' 
foo # => "AM*BE*3***LAST~" 

Perl 검색/바꾸기에서 일치 패턴을 재사용합니다. (나는 당신이 예제로 인해 줄의 끝에서만 일치한다고 가정하고있다. 만약 문자열의 어느 곳이라도 필요하다면 패턴에서 후행 $을 제거한다.)