gpt4 book ai didi

java正则表达式匹配不是数字的单词

转载 作者:行者123 更新时间:2023-11-29 04:42:47 25 4
gpt4 key购买 nike

我有一个缺少引号的 json

{
data: [{
timestamp: 1467720920,
val: {
min: 6.90,
max: 7.25,
avg: 7.22
},
temp: {
min: 75.49,
max: 75.49,
avg: 75.49
},
gps: {
lat: 0.707581,
long: -1.941864,
hdop: 2.54,
ttf: 49.4
}
}],
id: A1000049A6248C,
groupId: HU5PPC1E,
rssi: -93,
cell: {
timestamp: 1467731669,
rssi: -93,
lat: 0.735554,
long: -1.974655
}
}
}

我需要在冒号左侧的所有单词和冒号右侧的所有非纯数字单词周围加上引号。所以我需要 A1000049A6248C 周围的引号,而不是 -1.974655。我如何制作一个正则表达式来在 java 中执行此操作?我试过了

json.replaceAll("(\\w+|[+-]([0-9]*[.])?[0-9]+)", "\"$1\"");

这会将每个单词放在引号中。我也试过这样的事情来得到一个不是所有数字的词 json.replaceAll("\\b(?!\\d*)\\b", "\"$1\"") ;

预期格式

{
"data": [
{
"timestamp": 1463494202,
"val": {
"min": 6.75,
"max": 7.19,
"avg": 7.14
},
"temp_int": {
"min": 54.28,
"max": 54.28,
"avg": 54.28
},
"gps": {
"lat": 0.711407,
"long": -1.460091,
"hdop": 1.42,
"ttf": 42
}
}
],
"id": "A1000049A624D1",
"groupId": "299F7G5AR",
"rssi": -83,
"cell": {
"timestamp": 1463501353,
"rssi": -83,
"lat": 0,
"long": 0
}
}

最佳答案

您应该对“非数字”使用否定前瞻

((?![-+]?[0-9]*\\.?[0-9])\\w+\\b)

\"$0\" 替换

编辑:JimmyJames 解决方案可能更快,但仍然需要负前瞻来处理空值和 boolean 值 - 以处理整个 json。

\b(?!null|true|false)(\w|\.)*([a-z]|[A-Z])+(\w|\.)\b

关于java正则表达式匹配不是数字的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38512896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com