문제

문제는 다음과 같습니다.

split=re.compile('\\W*')

이 정규 표현은 일반 단어를 다룰 때 잘 작동하지만 다음과 같은 단어를 포함시키기 위해 표현이 필요한 경우가 있습니다. käyttäj&aml;auml;.

포함하려면 Regex에 무엇을 추가해야합니까? & 그리고 ; 캐릭터?

도움이 되었습니까?

해결책

당신은 아마도 문제를 뒤집어 놓고 싶을 것입니다. 즉, 공백없이 모든 캐릭터를 찾습니다.

[^ \t\n]*

또는 추가 문자를 추가하려고합니다.

[a-zA-Z0-9&;]*

HTML 엔티티와 일치하려면 다음과 같은 것을 시도해야합니다.

(\w+|&\w+;)*

다른 팁

엔터티를 단위로 취급합니다 (수치 문자 코드도 포함 할 수 있기 때문에) 다음과 같은 정규 표현이 발생합니다.

(\w|&(#(x[0-9a-fA-F]+|[0-9]+)|[a-z]+);)+

이것은 일치합니다

  • 단어 문자 (“포함”_"), 또는
  • HTML 엔터티로 구성됩니다
    • 캐릭터 "&”,
      • 캐릭터 "#”,
        • 캐릭터 "x”다음과 같은 16 진수 숫자 또는
        • 적어도 하나의 소수점 숫자, 또는
      • 적어도 하나의 문자 (= 명명 된 엔티티),
    • 세미콜론
  • 적어도 한 번.

/편집 : 오류를 지적 해 주신 τζωτζιου에 감사드립니다.

추가 캐릭터를 포함하는 캐릭터 클래스를 만들어야합니다. 예를 들어:

split=re.compile('[\w&;]+')

이것은 트릭을 수행해야합니다. 귀하의 정보를 위해

  • \w (소문자 'w') 단어 문자와 일치합니다 (영숫자)
  • \W (자본 W) 부정적인 문자 클래스입니다 (의미가없는 캐릭터와 일치 함).
  • * 0 번 이상 일치합니다 + 한 번 이상 일치합니다 * 캐릭터가 없어도 아무것도 일치합니다.

이것이 트릭을 한 것 같습니다.

split = re.compile ( '( w+& w+;)*')

제안 해주셔서 감사합니다. 그들 대부분은 Reggy에서 잘 작동했지만 RE.comPile에서 왜 실패했는지 잘 모르겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top