如何使用java正则去掉这个字符串的引号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用java正则去掉这个字符串的引号相关的知识,希望对你有一定的参考价值。

参考技术A 如何使用java正则去掉这个字符串的引号 具体问题是什么?只是要去掉引号?如果是这样的话,连正则表达式都不需要,直接用replace把引号替换掉就行了。

例如:'SL' 去掉后变成SL
String regexp = "\'";String str = "'SL'";System.out.println("替换前:" + str);str = str.replaceAll(regexp, "");System.out.println("替换后:" + str);我开始时犯了个很弱智的错误,以至于现在搞了近二十分钟才出来。就是把上面的str = str.replaceAll(regexp, "");换成str.replaceAll(regexp, "");然后再打印,发现结果始终是 ’SL',后来恍然大悟,String类被final修饰,是不可变的。所以对String对象施加任何操作都不会改变它的内容。而 str.replaceAll(regexp, ""); 相当于创建了一个新的字符串对象,即去掉了单引号的源字符串。 再修改字符串引用 str 指向新的字符串。则现在打印的就是去掉单引号后的字符串了。
如何用在正则去掉字符串中的\这个字符

var str = '\\sdsf\\dfsd' str = \sdsf\dfsd 因为\是转义字符,它本身要用两个它本身才能表示str.replace(/\\/g, '')

如何使用printf打印"c:\nomoon\"这个字符串
#include"stdio.h"
main()

printf("c:\\nomoon\\");

如何使用正则表达式匹配多个字符串
String regEx = "<a>([\s\S]*?)</a>";
String s = "<a>123</a><a>456</a><a>789</a>";
Pattern pat = Pattern.pile(regEx);
Matcher mat = pat.matcher(s);
boolean rs = mat.find();
for(int i=1;i<=mat.groupCount();i++)
System.out.println(mat.group(i));

awk如何使用regex排除某个字符串
使用 !/正则/
或 $0 !~ /正则/
表示不匹配正则时,执行后面的内容
正则中排除字符的写法 是 [^字符]
如果是多个字符,排除字串,需要使用 环视
如何使用python去掉指定的字符串
如果字符串是固定为string这种格式的可以:

s = 'ac468128a24a11e6ae35989096c6c478'

print(s[1:-2])

如果不是固定的格式:
s = 'ac468128a24a11e6ae35989096c6c478'

print(s.split('')[1].split('')[0])

知识延展:

如果字符串是固定为string这种格式的可以:

s = 'ac468128a24a11e6ae35989096c6c478'

print(s[1:-2])

如果不是固定的格式:
s = 'ac468128a24a11e6ae35989096c6c478'

print(s.split('')[1].split('')[0])
正则表达式 这个字符串如何表示?
^[a-zA-Z].3\.
^ 开头
[a-zA-Z] 一位大小写字母
.3 三位任意字符
\. 字符'.'

Java正则表达式用逗号分割字符串,但忽略引号和括号[重复]

【中文标题】Java正则表达式用逗号分割字符串,但忽略引号和括号[重复]【英文标题】:Java regex split string by comma but ignore quotes and also parentheses [duplicate] 【发布时间】:2013-05-19 01:38:54 【问题描述】:

我被这个正则表达式卡住了。

所以,我输入如下:

“起重机装置,(物理对象)”(X1,x2,x4),不是“研究护士看到的(发现)”,EntirePatellaBodyStructure(X1,X8),“Besnoitia wallacei(有机体)”,“Catatropis(有机体) )"(X1,x2,x4), not IntracerebralRouteQualifierValue, "Diospyros virginiana (organism)"(X1,x2,x4), not SuturingOfHandProcedure(X1)

最后我想得到的是:

“起重机设备,(物理对象)”(X1,x2,x4) 不是“研究护士看到的(发现)” 整个髌骨结构(X1,X8) “Besnoitia wallacei(有机体)” “Catatropis(有机体)”(X1,x2,x4) 不是 IntracerebralRouteQualifierValue “Diospyros virginiana(有机体)”(X1,x2,x4) 不是 SuturingOfHandProcedure(X1)

我试过正则表达式

(\'[^\']*\')|(\"[^\"]*\")|([^,]+)|\\s*,\\s*

如果括号内没有逗号,它可以工作。

【问题讨论】:

not() 的任何特别之处! 看起来你想要的是一个完整的解析器,而不是正则表达式。 这实际上是 prolog 命令,但在这种情况下“not”不起作用。括号中还有一个变量,但它可以为空。 有趣的查询。我想知道柿子与膝盖或手缝有什么关系。 :-) @JasonS 我希望它是重复的。我花了两个多小时试图在这里找到解决方案。我已经考虑过这个问题。 【参考方案1】:

正则表达式

(\w+\s)?("[^"]+"|\w+)(\(\w\d(,\w\d)*\))?

Java 代码

String input = ... ;
Matcher m = Pattern.compile(
          "(\\w+\\s)?(\"[^\"]+\"|\\w+)(\\(\\w\\d(,\\w\\d)*\\))?").matcher(input);
while(matcher.find()) 
    System.out.println(matcher.group());

输出

"Crane device, (physical object)"(X1,x2,x4)
not "Seen by research nurse (finding)"
EntirePatellaBodyStructure(X1,X8)
not "Besnoitia wallacei (organism)"(X1,x2,x4)
not "Catatropis (organism)"(X1,x2,x4)
not IntracerebralRouteQualifierValue
not "Diospyros virginiana (organism)"(X1,x2,x4)
not SuturingOfHandProcedure(X1)

【讨论】:

以我在请求您的正则表达式完美运行时给出的示例为例。但是,不幸的是,更新的示例不是,特别是没有任何引号的部分。不过还是谢谢你,我会努力改进的。 检查更新。根据您的新要求添加了正则表达式。【参考方案2】:

不要为此使用正则表达式。编写一个简单的解析器来跟踪遇到的括号数,以及您是否在引号内。更多信息请见:RegEx match open tags except XHTML self-contained tags

【讨论】:

【参考方案3】:

这能满足你的需要吗?

System.out.println(yourString.replaceAll(", not", "\nnot"));

【讨论】:

对不起,我举了不好的例子。当然“不”在这里不是必须的。 嗯,好的,我现在了解您更新的示例,我相信其他人的解决方案之一将适用于您。【参考方案4】:

假设不可能将() 嵌套在() 中,并且不可能将\" 嵌套在"" 中,您可以这样写:

private static final Pattern CUSTOM_SPLIT_PATTERN =
    Pattern.compile("\\s*((?:\"[^\"]*\"|[(][^)]*[)]|[^\"(]+)+)");
private static final String[] customSplit(final String input) 
    final List<String> ret = new ArrayList<String>();
    final Matcher m = CUSTOM_SPLIT_PATTERN.matcher(input);
    while(m.find()) 
        ret.add(m.group(1));
    
    return ret.toArray(new String[ret.size()]);

(免责声明:未经测试)。

【讨论】:

以上是关于如何使用java正则去掉这个字符串的引号的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串去掉引号

js如何将字符串前后的引号去掉

如何去掉字符串中的 双引号

CSV文件的双引号怎么去掉。用记事本打开有双引号,EXCEL打开又没有了,怎么样去掉这个双引号,这是个啥

带有转义引号的引用字符串的正则表达式

如何使用正则表达式从引号之间提取包含所需字符串的组? [关闭]