在java中使用[:punct:]函数的正则表达式

在java中使用[:punct:]函数的正则表达式,java,regex,syntax,pattern-matching,Java,Regex,Syntax,Pattern Matching,我正在使用“punct”函数替换 字符串ex:'REPLACE(REGEXP_REPLACE(colum1,[:punct:]],'','')作为输出',作为java中SQL字符串的一部分,但我希望特定的特殊字符'-'不被替换?你能建议最好的方法吗?根据: “[:点:” 标点符号;在“C”语言环境和ASCII字符编码中,这是“&()*,

我正在使用“punct”函数替换 字符串ex:'REPLACE(REGEXP_REPLACE(colum1,[:punct:]],'','')作为输出',作为java中SQL字符串的一部分,但我希望特定的特殊字符'-'不被替换?你能建议最好的方法吗?

根据:

“[:点:”
标点符号;在“C”语言环境和ASCII字符编码中,这是
&
*
^
{
<124;
}

因此,使用

[][!"#$%&'()*+,./:;<=>?@\\^_`{|}~]
请参见a(
-
介于
之间,因此需要在上述表达式中使用两个
!-、.-/
范围以排除连字符)。

根据:

“[:点:”
标点符号;在“C”语言环境和ASCII字符编码中,这是
%
<

因此,使用

[][!"#$%&'()*+,./:;<=>?@\\^_`{|}~]

请参见a(
-
介于
之间,因此您需要在上述表达式中使用两个
!-、.-/
范围以排除连字符)。

如果您处理的是ascii字符串,而不是使用
[[:punch:]
,请使用详尽的字符列表构建一个字符类。请注意,您的问题更多的是关于SQL。如果您处理的是ascii字符串,而不是使用
[[:punct:][]
,请使用字符的详尽列表构建一个字符类。请注意,您的问题更多的是关于SQL的。Hi@Wiktor Stribiżew感谢您的回答,但我试图在SQL ex中实现这一点:DECLARE colum1 VARCHAR2(20):='ABCD-EFG';查尔瓦查尔(20);BEGIN CHARW:=REPLACE(REGEXP_REPLACE(colum1),[:punc:],'');dbms_output.put_line('Printing'| | CHARW);END;Great,然后使用我建议的表达式。另外,请注意,
[:punc:]
包含一个打字错误,它必须是
[:punc:]
。无论如何,原子不能从POSIX正则表达式中减去(因为没有类似Java的
[\w&&[^\d]
或类似.NET的
[\p}-[,]]
),所以您需要按照我的说明重写它。我不希望在上面的输入SQL中删除特定字符'-',即,…'ABCD-EFG'是的,我知道了,我忘了排除它,我现在已经编辑了范围。所以,这个
[!“[!”。$%&'*+,./:?\\\\\\\\\\\\\\\\\\\\\\\\']
应该适合你。而且
[!-,.-/:-@[-`{-~]
也适合你。谢谢。刚刚尝试了这个替换(REGEXP_REPLACE(colum1,[!/:-@[-`{-~]'),'')…它起作用了,但是这个表达式会注意删除除特定字符'-'@Wiktor Stribiżewi@Wiktor Stribiżew之外的所有特殊字符吗谢谢你的回答,但我正试图在SQL中实现这一点:DECLARE colum1 VARCHAR2(20):='ABCD-EFG';CHARW VARCHAR(20);BEGIN CHARW:=REPLACE(REGEXP_REPLACE(colum1),[:punc:'))还有,请注意
[:punc:][/code>包含一个打字错误,它必须是
[:punc:][]
。无论如何,不能从POSIX正则表达式模式中减去原子(因为没有类似Java的
[\w&&[^\d]
或类似.NET的
[\p{p}-][,]
),所以您需要按照我的演示重写它。我不希望在上面的输入SQL中删除特定字符“-”,即,…'ABCD-EFG'是的,我知道了,我忘了排除它,我现在已经编辑了范围。因此,这个
[[!”。/:?\\\\\\\\\\\\\\\\{124}]
应该适合您。并且
[!-,.-/:---[-]-[-]
也适用于您。谢谢。刚刚尝试了此替换(REGEXP_REPLACE(colum1,[!/:-@[-`{-~]','');…它可以工作,但此表达式是否可以删除除特定字符'-'@Wiktor Stribiżew之外的所有特殊字符