[az]를 사용하여 CF 8에서 az까지의 알파벳을 확인할 수 있음을 알고 있습니다. 그러나 á, í, ó, é 같은 스페인어 알파벳을 감지하는 정규식이 있습니까? , ñ, 등? 사전에ColdFusion 8의 스페인어 알파벳에 대한 RegEx
감사합니다, 몬테
[az]를 사용하여 CF 8에서 az까지의 알파벳을 확인할 수 있음을 알고 있습니다. 그러나 á, í, ó, é 같은 스페인어 알파벳을 감지하는 정규식이 있습니까? , ñ, 등? 사전에ColdFusion 8의 스페인어 알파벳에 대한 RegEx
감사합니다, 몬테
내가 지금 찾을 수없는 국제 정규 표현식에 관한 토론 여기에 최근에 있었다. 현재 정규 표현식은 일반적으로 기본 라틴 알파벳만으로 가능하다는 것이 현재의 상황이라고 생각합니다.
특수 "단어 문자 클래스"\w
이 적합한 경우 사용해보세요. 주의 : 숫자와도 일치합니다. 아마도 당신이 정확하게 달성하고자하는 것을 예제로 명확히 할 수있을 것입니다.
\w
a
,
ä
또는
á
(뿐만 아니라
0
).
\w(?<!\d)
a
,
ä
또는
á
(그러나
0
).
\w+
은 börk
과 일치하지만 l33t
이됩니다.
\b(?:\w(?<!\d))+\b
은 l33t
이 아닌 börk
과 일치합니다.
CF 정규식을 사용하면 \ w는 영숫자와 밑줄 만 일치하며 음수 lookbehind를 지원하지 않으므로 예제가 의도 한대로 작동하지 않습니다. –
ColdFusion은 유니 코드 정규 표현식을 제대로 처리하지 못합니다. #Chr(375)#
과 같은 것을 사용하여 정규식 문자열로 문자를 가져올 수 있지만 그렇게하기가 다소 지저분합니다.
그러나 Java는 유니 코드와 함께 작동하며 CF는 Java를 쉽게 사용할 수 있으므로 Java 정규 표현식을 사용하여 유니 코드 일치를 수행 할 수 있습니다. 정규식 여기에 유니 코드에 대한 자세한 내용과 함께
\p{L}
:
이 자바 정규식에서 하나의 유니 코드 문자와 일치합니다 http://www.regular-expressions.info/unicode.html
그리고 CF에서 자바 정규식을 사용하는 등 잘 간단한 교체 만하면됩니다.
<cfset NewString = OldString.replaceAll('\p{L}','ReplaceWith') />
문자열을 바꿀 필요가 있습니다. 그렇게 할 수 있습니다.
그러나 일치 (재 대합에 해당) 또는 더 복잡한 기능을 원하면 가장 간단한 해결책은 Java 정규식 기능을 호출 할 수있는 일반 CFML 기능이있는 사용하기 쉬운 CFC로 래핑하는 구성 요소를 사용하는 것입니다. jre-utils.cfc
처럼 이것은 당신이 할 수 있습니다 : 문자열에서 (유니 코드) 단어의 배열을 반환합니다
<cfset jre = createObject('component','jre-utils').init() />
<cfset Matches = jre.match('\p{L}++' , String) />
. 이 시점에서 아직도 꽤 많이 있어요, 그 두번째
"구축 자신의"표준 라틴 알파벳 이외의 작업을 할 때. – patjbs