因此,我面临以下问题:

我得到的字符串是"字符串"或"字符"的形式.简而言之,他们带着自己的‘’和‘’而来.当我的代码中的字符串变量本身存储它们时,它们看起来类似于"\"字符串\""和"\‘char\’".

(我还得到了许多不同格式的值,例如十六进制、八进制和整型.我正在使用Java正则表达式来识别它们,并且我成功地做到了这一点.唯一的问题是字符串和字符的值.)

我想使用Java正则表达式来区分它们,并获得字符和字符串的值,而不是所有的""和"‘.

以下是我用来识别char的模式,但它似乎不起作用.

Pattera charPattern=Pattern.Compile("\S*[\‘][\S\S][\’]\S*");

Pattera charPattern2=Pattern.Compile("\S*[‘][\S\S][’]\S*");

我所期望的是,该模式将能够识别这种性质的字符‘char’.之后,我只需将\‘替换为空格即可获得主值.

能帮帮忙吗?

推荐答案

... When the String variable in my code stores them in itself they look something like this "\"string\"" and "\'char\'". ...

... I want to use java regex to differentiate between them and get the value of the char and string without all the "" and ''. ...

您可以使用look-around语法来断言这些值.

This will produce overlapping values.
For example in the text, "abc" + x + "123", the " + x + " will be captured.

((?<=\").+?(?=\")|(?<=').+?(?='))

下面是使用100101类的示例.

String s = "123 \"abc\" 456 def '7'89";
Pattern p = Pattern.compile("((?<=\").+?(?=\")|(?<=').+?(?='))");
Matcher m = p.matcher(s);
while (m.find()) System.out.println(m.group(1));

输出

abc
7

或者,捕获引号,消除重叠值,并以编程方式删除基准.

(\".+?\"|'.+?')
String s = "123 \"abc\" 456 def '7'89", g;
Pattern p = Pattern.compile("(\".+?\"|'.+?')");
Matcher m = p.matcher(s);
while (m.find()) {
    g = m.group(1);
    System.out.println(g.substring(1, g.length() - 1));
}

Java相关问答推荐

Spring安全实现多个SQL表身份验证

伪类focus-in不适用于PFA中的选项卡

如何计算内循环的时间复杂度?

填写文本字段后锁定PDF

如何在返回bigint []值的子查询中使用any?

如何在访问完所有文件后加入所有线程?

参数值[...]与预期类型java.util.Date不匹配

根据对象和值的参数将映射<;T、值&>转换为列表<;T&>

Spring Boot@Cachebale批注未按预期工作

如何在运行时动态创建表(使用Java、JPA、SprringBoot)

SpringBoot Kafka自动配置-适用于SASL_PLAYTEXT的SSLBundle 包,带SCRAM-SHA-512

允许同时执行两个方法,但不能同时执行这两个方法

在settings.gradle.kts和Build.gradle.kts中使用公共变量

如何在太阳系模拟器中添加月球?

来自外部模块的方面(对于Java+Gradle项目)不起作用

RestTemplate Bean提供OkHttp3ClientHttpRequestFactory不支持Spring Boot 3中的请求正文缓冲

JXBrowser是否支持加载Chrome扩展?

获取所有可以处理Invent.ACTION_MEDIA_BUTTON Android 13 API33的Android包

使用DynamoDB增强客户端时未更新属性

java.exe如何执行java源代码?