ColdFusion 8 中西班牙语字母的正则表达式

发布于 2024-07-29 14:05:21 字数 105 浏览 6 评论 0原文

我知道我可以使用 [az] 来检查 CF 8 中从 a 到 z 的任何字母。但是,是否有任何正则表达式可以检测西班牙语字母,如 á、í、ó、é、ñ 等?

提前致谢, 蒙特

I know that I can use [a-z] to check for any alphabets from a to z in CF 8. However, are there any regex to detect spanish alphabets like á, í, ó, é, ñ, etc.?

Thanks in advance,
Monte

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

叫思念不要吵 2024-08-05 14:05:21

ColdFusion 不能很好地处理 Unicode 正则表达式。
您可以使用诸如 #Chr(375)# 之类的方法将字符放入正则表达式字符串中,但这样做有点混乱。

然而,Java 确实可以使用 Unicode,并且由于 CF 可以轻松地利用 Java,因此您可以使用 Java 正则表达式来进行 unicode 匹配。

这将匹配 Java 正则表达式中的单个 Unicode 字母:

\p{L}

有关正则表达式 Unicode 的更多详细信息,请参见:http:// /www.regular-expressions.info/unicode.html

至于在 CF 中使用 Java 正则表达式,简单的替换就是这样:

<cfset NewString = OldString.replaceAll('\p{L}','ReplaceWith') />

所以如果您需要的只是替换字符串,您可以这样做。

但是,如果您想要匹配(相当于重新匹配)或更复杂的功能,那么最简单的解决方案是使用一个组件,将 Java 正则表达式功能包装到易于使用的 CFC 中,并带有您可以调用的常规 CFML 函数。 就像 jre-utils.cfc

这允许您执行

<cfset jre = createObject('component','jre-utils').init() />

<cfset Matches = jre.match( '\p{L}++' , String ) />

以下操作:这将返回字符串中 (Unicode) 单词的数组。

ColdFusion doesn't nicely deal with Unicode regex.
You can use things like #Chr(375)# to get the characters into a regex string, but it's a bit messy having to do that.

However, Java does work with Unicode, and since CF can utilise Java easily, you can use Java regexes to do unicode matching.

This will match a single Unicode letter in Java regex:

\p{L}

With more details on regex Unicode here: http://www.regular-expressions.info/unicode.html

And as for using Java regex in CF, well simple replacing is just this:

<cfset NewString = OldString.replaceAll('\p{L}','ReplaceWith') />

So if all you need is to replace strings, you can do that.

However, if you want matching (equivalent to rematch), or more complex functionality, then simplest solution is to use a component that wraps the Java regex functionality into a easy to use CFC with regular CFML functions you can call. Like jre-utils.cfc

This allows you to do:

<cfset jre = createObject('component','jre-utils').init() />

<cfset Matches = jre.match( '\p{L}++' , String ) />

Which will return an array of the (Unicode) words in the string.

蓝梦月影 2024-08-05 14:05:21

最近这里有一个关于国际正则表达式的讨论,但我现在找不到。 我相信目前的情况是,正则表达式通常只能使用默认的拉丁字母。

There was recently a discussion here about international RegExes which I cannot find right now. I believe the current situation is that regular expressions are commonly possible with only default latin alphabet.

も星光 2024-08-05 14:05:21

尝试一下特殊的“单词字符类”\w 是否适合您。 注意:这也会匹配数字。 也许你可以用一个例子来澄清你到底想要完成什么?

\w 应匹配 aäá(也可匹配 0)。

\w(? 将匹配 aäá (但不匹配 aäá) >0)。

\w+ 将匹配 börk,但也匹配 l33t

\b(?:\w(? 将匹配 börk,但不匹配 l33t

Try if the special "word character class" \w works for you. Caution: This will also match numbers. Perhaps you could clarify with an example what you want to accomplish exactly?

\w should match a, ä or á (but also 0).

\w(?<!\d) will match a, ä or á (but not 0).

\w+ will match börk but also l33t.

\b(?:\w(?<!\d))+\b will match börk but not l33t.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文