문자열을 정규식으로 보간
문자열 값을 루비의 정규 표현으로 대체해야 합니다.이것을 하는 쉬운 방법이 있습니까?예:
foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0"
if goo =~ /value of foo here dynamically/
puts "success!"
end
문자열 삽입과 동일합니다.
if goo =~ /#{Regexp.quote(foo)}/
#...
if goo =~ /#{Regexp.quote(foo)}/
"명백한" 버전을 수행하는 경우:
if goo =~ /#{foo}/
일치 텍스트의 마침표는 정규식 와일드카드로 처리됩니다."0.0.0.0"
일치할 것"0a0b0c0"
.
또한 하위 문자열 일치 여부를 확인하려면 간단히 다음을 수행할 수 있습니다.
if goo.include?(foo)
추가 견적이나 특수 문자에 대한 걱정이 필요하지 않습니다.
아마Regexp.escape(foo)
시작점이 될 수도 있지만, 더 일반적인 표현식 표현을 사용할 수 없는 좋은 이유가 있습니까?"my stuff #{mysubstitutionvariable}"
?
또한, 당신은 그냥 사용할 수 있습니다.!goo.match(foo).nil?
문자 그대로의 문자열로
Regexp.compile(Regexp.escape(foo))
다음은 제한적이지만 유용한 다른 답변입니다.
Regexp를 사용하지 않고 Regexx에 쉽게 삽입할 수 있다는 것을 알게 되었습니다.입력 문자열에 단일 따옴표만 사용한 경우 quote 또는 Regexp.escape: (IP 주소 일치)
IP_REGEX = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
my_str = "192.0.89.234 blahblah text 1.2, 1.4" # get the first ssh key
# replace the ip, for demonstration
my_str.gsub!(/#{IP_REGEX}/,"192.0.2.0")
puts my_str # "192.0.2.0 blahblah text 1.2, 1.4"
작은 따옴표는 \\ 및 \'만 해석합니다.
http://en.wikibooks.org/wiki/Ruby_Programming/Strings#Single_quotes
이것은 정규식의 긴 부분을 여러 번 사용해야 할 때 도움이 되었습니다.보편적이지는 않지만, 질문의 예에 맞는다고 생각합니다.
Regexp.new 사용:
if goo =~ Regexp.new(foo) # Evaluates to /0.0.0.0/
foo = "0.0.0.0"
goo = "here is some other stuff 0.0.0.0"
puts "success!" if goo =~ /#{foo}/
언급URL : https://stackoverflow.com/questions/150095/interpolating-a-string-into-a-regex
'itsource' 카테고리의 다른 글
iOS에서 입력 텍스트 색상 사용 안 함 (0) | 2023.06.01 |
---|---|
wpf 데이터 그리드에 상황에 맞는 메뉴를 추가하는 방법은 무엇입니까? (0) | 2023.06.01 |
Azure 함수 앱에서 큐 트리거를 위한 큐 이름 구성 방법 (0) | 2023.06.01 |
Node.js 및 Mongoose에 대한 관리 패널 (0) | 2023.06.01 |
bash 문자열 등식 (0) | 2023.06.01 |