- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
문자열 옆의 숫자 추출
안녕하세요, 문자열 옆에 있는 숫자를 추출하는 데 도움을 줄 수 있는 사람이 있나요?
아래에 표시된 열 1이 있고 "HFA"(열 2)에 인접한 숫자를 추출할 것으로 예상됩니다.
다음 JSL을 시도했지만 예상한 열2를 얻을 수 없습니다.
Num( Regex( :열 1, "(\d\d\d)HFA | HFA(\d\d\d)", "\1" ) )
열 1 | 열 2 |
400HFA isa300 | 400 |
isa300 HFA400 | 400 |
질문을 고려해 주셔서 감사합니다.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 문자열에 인접한 숫자 추출
작은 예제 세트가 주어지면 다음 공식이 작동합니다.
Num( Regex( :column1, "(\d*)HFA(\d*)", "\1\2" ) )
이 솔루션은 "400HFA300"과 같은 인스턴스가 있는 경우 문제가 발생합니다.400300을 반환합니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 문자열에 인접한 숫자 추출
작은 예제 세트가 주어지면 다음 공식이 작동합니다.
Num( Regex( :column1, "(\d*)HFA(\d*)", "\1\2" ) )
이 솔루션은 "400HFA300"과 같은 인스턴스가 있는 경우 문제가 발생합니다.400300을 반환합니다.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 문자열에 인접한 숫자 추출
안녕하세요 Ngambels님,
당신의 도움을 주셔서 대단히 감사합니다. 문제가 해결되었습니다.
나는 시도했다
"(\d*)HFA(\d*)"
그러나 분명히 나는 놓쳤습니다 (나는 \1과 \2를 모두 사용할 수 있고 사용해야한다는 것을 몰랐습니다)
"\1\2"
나는 당신과 이 토론을 통해 새로운 것을 배웠습니다.
다시 한 번, 대단히 감사합니다!
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 문자열에 인접한 숫자 추출
어떤 이유로 문제를 해결해야 하는 경우 @ngambles 언급했듯이 한 가지 매우 간단한 방법은 Regex 대신 Regex Match를 사용하는 것입니다.
Names Default To Here(1);
a = "400HFA isa300";
b = "isa300 HFA400";
c = "400HFA300";
d = "400HF300";
rgx_pattern = "(\d*)(?:HFA)(\d*)";
show(Regex Match(a, rgx_pattern));
show(Regex Match(b, rgx_pattern));
show(Regex Match(c, rgx_pattern));
show(Regex Match(d, rgx_pattern));
정규식 일치는 캡처된 그룹 목록을 반환하므로 몇 가지 추가 검사가 필요합니다.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 문자열에 인접한 숫자 추출
감사 @AprioriFish3134 원래 문제를 지적하기 위해(\2 없음), @ngambles 좋은 솔루션을 위해.
더 많은 수준의 중첩 괄호 또는 예제의 순차 괄호가 필요한 경우 왼쪽에서 오른쪽으로 여는 괄호를 세어 역참조 번호를 찾으면 됩니다. 사용하지 않은 대안에 대한 역 참조는 빈 문자열입니다.
Regex( "abac", "(((a)|(b)|(c))(c))+", "1=\1 2=\2 3=\3 4=\4 5=\5 6=\6" )
"1=ac 2=a 3=a 4= 5= 6=c"
분명하지 않을 수 있는 한 가지: 백 참조도 패턴에서 사용할 수 있습니다. 이것은 선행 및 후행 따옴표 또는 아포스트로피가 일관되게 사용되도록 하는 데 유용할 수 있습니다.
Write( Regex(
"before 'a \!"b\!" c' after", // before 'a "b" c' after
"(\!"|')(.*?)\1", // ("|')(.*?)\1
"\2"
) )
a "b" c
(\!" 이스케이프는 문자열 안에 따옴표를 넣고 주석은 문자열의 텍스트를 보여줍니다.) 이 예에서 \1 그룹은 " 또는 '와 일치할 수 있고 \2는 \1.
그런 식으로 정규식을 작성하는 경우 주석을 사용하십시오! 다음 관리자는 그것을 감사할 것입니다.
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 문자열에 인접한 숫자 추출
정규식을 연습하고 테스트하기에 좋은 곳은 https://regex101.com/ .
JMP 이스케이프 문자가 제거된 주석은 매우 도움이 되었습니다. 더 복잡한 정규식 패턴을 작성할 때 주석을 추가하기 시작해야 합니다( 이스케이프된 문자의 정규식 문제 )
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 문자열에 인접한 숫자 추출
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
Re: 문자열에 인접한 숫자 추출
안녕 @Craige_Hales ,
토론을 풍성하게 해 주셔서 대단히 감사합니다.
사실 이전 기사에서 JMP의 정규식에 대해 처음 배웠습니다!
https://community.jmp.com/t5/Uncharted/Regex/ba-p/21008
원래 English (US) 로 작성된 이 게시물은 귀하의 편의를 위해 번역되었습니다. 답장을 보내면 English (US) 로 다시 번역됩니다.