다음과 같은 텍스트 문자열이있는 경우 줄 바꿈 일지라도 C#의 모음에서 대괄호의 내용을 어떻게 수집 할 수 있습니까? 휴식? 예대괄호의 내용을 C#에서 텍스트 문자열로 추출하는 방법 Regex
...
string s = "test [4df] test [5yu] test [6nf]";
날을 제공한다 ..
컬렉션 [0] = 4df
컬렉션 [1] = 5yu
컬렉션 [2] = 6nf
다음과 같은 텍스트 문자열이있는 경우 줄 바꿈 일지라도 C#의 모음에서 대괄호의 내용을 어떻게 수집 할 수 있습니까? 휴식? 예대괄호의 내용을 C#에서 텍스트 문자열로 추출하는 방법 Regex
...
string s = "test [4df] test [5yu] test [6nf]";
날을 제공한다 ..
컬렉션 [0] = 4df
컬렉션 [1] = 5yu
컬렉션 [2] = 6nf
당신은 정규 표현식이 할 수 있고, Linq에 약간의 : 전자 키를 사용하면 [
문자가이 방법을 일치시킬 수 있습니다 예를 들어 올바르게, 정규 표현식에서 사용되는 특수 문자를 탈출하는 것입니다.
string s = "test [4df] test [5y" + Environment.NewLine + "u] test [6nf]";
ICollection<string> matches =
Regex.Matches(s.Replace(Environment.NewLine, ""), @"\[([^]]*)\]")
.Cast<Match>()
.Select(x => x.Groups[1].Value)
.ToList();
foreach (string match in matches)
Console.WriteLine(match);
출력 : 정규 표현식을 의미
여기4df
5yu
6nf
가 무슨 :
\[ : Match a literal [
( : Start a new group, match.Groups[1]
[^]] : Match any character except ]
* : 0 or more of the above
) : Close the group
\] : Literal ]
Regex regex = new Regex(@"\[[^\]]+\]", RegexOptions.Multiline);
@ "\ [([^]] *) \]"는 좋아하는 패턴 인 것 같습니다. –
Th @"\["
는, 중요한 부분은 게으른 운영자 입니다
Regex rx = new Regex(@"\[.+?\]");
var collection = rx.Matches(s);
.
RegexOptions.Multiline을 지정해도 여러 줄에 걸쳐 작동하지 않습니다. (알고 있습니다, 시도했습니다.) –
여러 줄을 모두 사용하면 괜찮습니다. –
Regex.SingleLine을 사용할 수 있습니다. 너무. 실제로이 방법은 전체 문자열이 아닌 문자열의 캡처 된 부분 만 바꾸기 때문에 필자가 제시 한 솔루션보다 성능이 약간 향상 될 수 있습니다. –
정말 멋집니다. – Ravia
대답 주셔서 감사합니다, 나는 놀았지만 관리 할 수 없습니다 - 어떻게 대괄호를 포함하도록 정규 표현식을 변경하겠습니까? –