나는 패턴 문자열이 "{국가}에 오신 것을 환영합니다 안녕하세요 {이름},"
및 전체 값 문자열 : "안녕하세요 스콧, 베트남에 오신 것을 환영합니다"
어떻게
이름 = 스콧, 나라 = 베트남
나는이 문제를 해결하기 위해 몇 가지 정규 표현식을 볼 수 있지만 내가 여기에 퍼지 매칭을 적용 할 수 있습니다 : 나는 {이름}의 값과 {나라}을 추출?
예 : 역행 문자열 "베트남에 오신 것을 환영합니다. Hello Scott", 정규 표현식도 변경해야합니까?가져 오기 문자열 값
1
A
답변
1
: 방법은 패턴에서 토큰 이름을 추출
public Dictionary<string, string> GetMatches(string pattern, string source)
{
var tokens = new List<string>();
var matches = new Dictionary<string, string>();
pattern = Regex.Escape(pattern);
pattern = Regex.Replace(pattern, @"\\{.*?}", (match) =>
{
var name = match.Value.Substring(2, match.Value.Length - 3);
tokens.add(name);
return $"(?<{name}>.*)";
});
var sourceMatches = Regex.Matches(source, pattern);
foreach (var name in tokens)
{
matches[name] = sourceMatches[0].Groups[name].Value;
}
return matches;
}
후 대체 capture group이라는 정규식과 동일한 구문을 갖는 토큰. 그런 다음 수정 된 패턴을 정규 표현식으로 사용하여 소스 문자열에서 값을 추출합니다. 마지막으로 캡처 된 토큰 이름과 명명 된 캡처 그룹을 사용하여 반환 할 사전을 작성합니다.
+0
최고의 솔루션을 만나보십시오! – phuongnd
3
당신은 정규식을 사용할 수 있습니다
이var Matches = Regex.Matches(input, @"hello\s+?([^\s]*)\s*|welcome\s+?to\s+?([^\s]*)", RegexOptions.IgnoreCase);
string Name = Matches.Groups[1].Value;
string Country = Matches.Groups[2].Value;
업데이트 : 변경된 코드는 하나의 방식으로 작동 할 수 있습니다. Demo. 다음과 같이 할 수
+1
정규식을 사용하여 템플릿에서 토큰을 추출하고 원래 토큰을 명명 된 캡처 그룹으로 바꾸고 나머지 문자열을 이스케이프 처리하는 새 정규식을 작성하십시오. – seairth
0
그냥 신속하고 더러운 ... 더 일반적인 솔루션으로
string pattern = "Hello Scott, welcome to VietNam";
var splitsArray = pattern.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
var Name = splitsArray[1].Replace(",", string.Empty);
var country = splitsArray[4];
관련 문제
- 1. AS3 - 문자열 값 가져 오기
- 2. UISegmentedControl에서 문자열 값 가져 오기
- 3. 쿼리 문자열 값 가져 오기
- 4. NSArray에서 문자열 값 가져 오기
- 5. 스레드에서 문자열 값 가져 오기
- 6. 주어진 문자열 입력의 바이트 값 가져 오기
- 7. 원격 함수 호출에서 문자열 값 가져 오기
- 8. PHP 쪽에서 JSON 문자열 값 가져 오기
- 9. Applescript 문자열 이름으로 속성 값 가져 오기
- 10. 문자열 생성자에서 enum 값 가져 오기
- 11. 최대 날짜와 연결된 문자열 값 가져 오기
- 12. iOS 문자열 지역화 기본 값 가져 오기
- 13. 안드로이드 문자열 배열에서 값 가져 오기
- 14. foreach 문 (문자열 값 가져 오기)
- 15. VB.Net - 요소 html의 문자열/값 가져 오기?
- 16. 자바의 문자열 값에서 숫자 값 가져 오기
- 17. matlab에서 복수 값 가져 오기 문자열
- 18. Umbraco - 텍스트 문자열 값 가져 오기
- 19. JFrame에서 Java 클래스로 문자열 값 가져 오기
- 20. 값 폴더에서 클래스로 문자열 가져 오기 android
- 21. String 클래스의 문자열 값 가져 오기
- 22. 문자열 배열 목록에서 값 가져 오기?
- 23. 문자열 배열에서 문자 값 가져 오기
- 24. 리플렉션을 통해 문자열 변수의 값 가져 오기
- 25. 스몰 토크 - 문자열 값 가져 오기
- 26. XML에서 연결된 값 문자열 가져 오기
- 27. Java 문자열 여러 색인 값 가져 오기
- 28. checklistbox에서 문자열 값 가져 오기 checkeditems list
- 29. 자바 스크립트에서 문자열 키로 값 가져 오기
- 30. 문자열 입력에서 인수 값 가져 오기
문제를 재현 할 수있는 최소한의 코드가 없기 때문에이 질문을 주제와 관련이없는 것으로 보겠습니다. –
정규 표현식을 사용해 보았지만 실제 질문은 표현식을 변경하지 않고 일반적인 방식으로 값을 추출하는 방법입니다. – phuongnd
@phuongnd 업데이트 된 답변은 두 가지 방식으로 모두 작동합니다. –