특정문구만 가져오기 질문있습니다.

<span class="l5k26z4s snfsxcfg oysqpf8i kxmygt8f svz86pwt jrvjs1jy a53abz89">
    게시물 만들기
</span>

여기서 클래스 l5k26z4s snfsxcfg oysqpf8i kxmygt8f svz86pwt jrvjs1jy a53abz89 이 부분만 가져오고 싶은데 어떻게 하는지 고수분들 알려주세요 C#입니다.

1개의 좋아요

여기서 라고 말씀하시는게 어딜 말씀하시는 건가요?

1개의 좋아요

특정 텍스트 문자열 안에서 원하는 문자열만 추출하기 위해서 쓸 수 있는 방법은 여러가지가 있습니다.

// 예시
var text = "gqtwwcdv iirkyoct ilkdwxbd l5k26z4s snfsxcfg oysqpf8i kxmygt8f svz86pwt jrvjs1jy a53abz89 latdkkja kufpxqvr qxswrnek xfqqcxch oqkvhalw";

// 방법 1
var parts = "l5k26z4s snfsxcfg oysqpf8i kxmygt8f svz86pwt jrvjs1jy a53abz89".Split(new char[] { ' ', }, StringSplitOptions.RemoveEmptyEntries);
var found = new List<string>();
foreach (var eachPart in parts)
{
	var foundIndex = text.IndexOf(eachPart);
	if (foundIndex > (-1))
		found.Add(text.Substring(foundIndex, eachPart.Length));
}

Console.Out.WriteLine(string.Join(",", found));

// 방법 2
var matches = Regex.Matches(text, "[a-z0-9]+", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match eachMatch in matches)
{
	Console.Out.WriteLine(eachMatch.Value);
}

검색하려는 문자열의 패턴을 정의해서 거기에 맞춰 정규표현식을 작성할 수 있는 것이 이상적입니다. 그렇지 않을 경우, 복잡한 규칙에 따라 검색할 문자열을 계산하거나, 사용자 입력에 의존해서 검색하거나, 하드 코딩을 하는 방법 중 하나를 택해야 합니다.

ps. 코드를 올리고 싶으실 때에는 ` 문자를 세 번 써주셔서 이스케이프 처리를 해야 합니다. 그렇지 않으면 파악하기 어렵습니다.

3개의 좋아요

덧. 혹시나 해서 질문글을 다시 읽어보니 HTML 태그 안의 문자열을 가져오려는게 질문의 의도셨군요.

앞서 설명드린 정규표현식을 이용하는 방법을 예로 들면 다음과 같습니다.

var content = @"<span class=""l5k26z4s snfsxcfg oysqpf8i kxmygt8f svz86pwt jrvjs1jy a53abz89"">게시물 만들기</span>";
var match = Regex.Match(content, @"\""(?<AttrValue>[^\""]+)\""", RegexOptions.Compiled | RegexOptions.IgnoreCase);
Console.WriteLine(match.Groups["AttrValue"].Value);

검색하고자 하는 문자열의 특징을 정규표현식으로 쓰고, 정확히 매칭하고 싶은 부분을 그룹으로 지정하면 위와 같은 코드를 작성할 수 있습니다.

단, 복잡한 HTML 구문 분석은 HTML 분석 라이브러리를 이용하시는 것이 효율적입니다. HtmlAgilityPack이 대표적이며 그 외에 여러 구현체들이 있으니 살펴보시는 것을 추천합니다.

4개의 좋아요

감사합니다.^^

1개의 좋아요

감사합니다.

2개의 좋아요