Leetcode에는 "단어 목록이 있으면 한 줄의 미국식 키보드에서만 알파벳 문자를 사용하여 입력 할 수있는 단어를 반환합니다."라는 질문이 있습니다. [ "A", "B", "P", :, 때와 같은 입력matche의 결과가 표현식과 다른 이유는 무엇입니까?
public string[] FindWords(string[] words)
{
return words.Where(x => Regex.Match(
x, @"[qwertyuiop]*|[asdfghjkl]*|[zxcvbnm]*",
RegexOptions.IgnoreCase).Value == x).ToArray();
}
을하지만 여전히 됐는 예를 얻을 수 없습니다 :이 문제를 해결하기 위해, 나는 다음과 같은 C#에서 정규 표현식을 사용하려고 "hello"]
"p"만 반환 할 수 있습니다.
어디에서 잘못 했습니까?
"올바르지 않은"것은 무엇입니까? [질문하기 전에 작은 프로그램을 디버깅하는 방법] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)을 배워야합니다. –
@ScottChamberlain 나쁜 예입니다. 어설 션의 양은 올바른 정규식을 작성하는 데 도움이되지 않습니다. 예, 테스트 우선 접근법은 훌륭하지만 일정 수준의 온전하고 일반적인 상식이 적용됩니다. "Hello World"를 작성해야하는 경우 메소드에 대해 적어도 7 개의 어설 션 및 테스트를 작성하는 것은 시간 낭비입니다. –
@PhilP. 아니, 그 여전히 매우 relevent. 가장 도움이 될만한 기사의 조언은 * "[프로그램을 진행하는 동안] 목록에없는 항목이 있으면 목록에 실수가있는 것입니다. 프로그램에 오류가 있거나 프로그램에 실수가있는 경우 실수로 코드를 작성한 경우 잘못되었다는 것을 수정하십시오. 수정 방법을 모르는 경우 적어도 지금은 특정 기술적 인 질문이 있습니다. StackOverflow! "* OP는 정규 표현식에서 실수를 범했습니다. –