如何使用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正则去掉这个字符串的引号的主要内容,如果未能解决你的问题,请参考以下文章