当前位置: 首页 > 面试题库 >

Oracle中所有重音字符的正则表达式

呼延辰龙
2023-03-14
问题内容

我正在尝试查找带有重音符号的数据。我已经试过了:

select *
from xml_tmp
where regexp_like (XMLTYpe.getClobVal(xml_tmp.xml_data), unistr('\0090'))

而且有效。它查找XML数据字段包含where的所有记录。问题在于它仅将大写字母E与重音符匹配。我试图编写一个更通用的查询,以使用对等类查找带有重音元音(a,e,i,o,u,大写和小写以及任何重音)的所有数据。我想要一个正则表达式
匹配重音元音,但是我不确定如何获取它,因为等价类(例如[[=e=]]匹配 所有 e的(带或不带有重音))都可以。

另外,这实际上不起作用:

select *
from xml_tmp
where regexp_like (XMLTYpe.getClobVal(xml_data),'脡');

(使用Oracle 10g)


问题答案:

经过更多的实验后,我发现这似乎行得通:

select *
from xml_tmp
where regexp_like(XMLTYpe.getClobVal(xml_data),'[^[:graph:][:space:]]')

我以为这[:graph:]会包括 所有 带有或不带有重音符号的大写和小写字符,但似乎它只匹配未 重音的 字符。

进一步的实验表明,这可能并非在所有情况下都有效。尝试以下查询:

select *
from dual
where regexp_like (unistr('\0090'),'[^[:graph:][:space:]]');



假的
-------
X
(比赛成功)

所以看起来导致我麻烦的角色与此模式匹配。

select *
from dual
where regexp_like ('脡','[^[:graph:][:space:]]');



假的
-------

(比赛失败)

当我尝试使用带重音符号E的复制粘贴语句运行此查询时,匹配失败!我想我复制粘贴的内容实际上是不同的。gh,我想我现在讨厌更改字符编码。



 类似资料:
  • 我已经研究了堆栈溢出(替换字符...呃,JavaScript如何不遵循有关RegExp的Unicode标准等等),但还没有找到这个问题的具体答案: 目前,我正在讨论三种添加支持的方法中的一种,所有这些方法我都进行了测试和工作(至少在某种程度上,我不知道第二种方法的“范围”是什么)。它们在这里: 这将使姓/名与中支持的任何重音字符正确匹配。 这与任何东西都是匹配的,至少以的形式是这样的。好吧,我想.

  • 问题内容: 我已经研究了StackOverflow替换字符。eh,JavaScript如何不遵循有关RegExp的Unicode标准等),还没有真正找到问题的具体答案: 我正在强制UI中的字段匹配以下格式:( 最后一个[逗号空间]首先) ,并且我想提供对变音符号的支持,但是显然在JavaScript中,它比其他语言/平台要难一些。 这是我的原始版本,直到我想添加变音符号支持: 目前,我正在讨论增加

  • 我看了Stack Overflow(替换字符...呃,JavaScript如何不遵循有关RegExp的Unicode标准等),但还没有真正找到“JavaScript如何匹配重音字符(带有变音符号的字符)”这个问题的具体答案? 我正在强制UI中的字段匹配格式:(最后[逗号空间]第一),我想提供对变音符号的支持,但显然在JavaScript中它比其他语言/平台更难。 这是我的原始版本,直到我想添加变音

  • 问题内容: 我有一个单词列表,我必须输出其中没有元音的单词数量。我到目前为止 我更担心reg表达式是错误的。 问题答案: 这对我有用: 另外,您应该小写字符串,而不是表达式:

  • 问题内容: 有没有办法使用正则表达式来匹配重复的字符集?例如: 我知道那是错的。但是有什么可以匹配这种效果的吗? 更新: 您可以使用嵌套捕获组吗?像什么? 问题答案: 将要重复的正则表达式放在括号中。例如,如果您要重复5次: 或者,如果您想要任意数量的重复(0或更多): 或一个或多个重复: 编辑 以回应更新 正则表达式中的括号有两个作用:它们将正则表达式中的一系列项目组合在一起,以便您可以将运算符