如何从结构化字符串中提取Resultset子串?正则表达式需求
解决字符串中提取Resultset子串的正则方案
我懂你现在的困扰——要从这些格式不太规整的字符串里精准揪出Resultset:后面到下一个有效边界的内容,还得避免把后面的其他键值对也扯进来,尤其是当Resultset为空或者根本不存在的时候。
核心正则表达式
直接给你能搞定所有情况的正则:
Resultset:(.*?)(?=, [A-Za-z]+:|})
正则逻辑拆解
Resultset::精准定位目标键的起始位置,确保我们从正确的地方开始提取(.*?):非贪婪模式的任意字符匹配,这是避免多余内容的关键!它会尽可能少地抓取字符,不会把后面的Resultvalue:或者hashvalue:这类其他键的内容也包含进来(?=, [A-Za-z]+:|}):正向预查边界,用来判断什么时候停止提取——要么遇到, 字母+:这样的下一个键开头,要么遇到闭合的}
对应你的输入验证
把你的每个输入套进去,结果完全符合预期:
- 输入:
{Resultset: 234, edf, ejj, Resultvalue: hsh, 23,hhs}→ 提取内容:234, edf, ejj→ 组合成Resultset: 234, edf, ejj - 输入:
{ hashvalue: 233, ehdh, Resultset: 2dd34, edf, ejj}→ 提取内容:2dd34, edf, ejj→ 组合成Resultset: 2dd34, edf, ejj - 输入:
{hashvalue: 233, ehdh, Resultset: 2dd34, Resultvalue: hsh, 23,hhs}→ 提取内容:2dd34→ 组合成Resultset: 2dd34 - 输入:
{hashvalue: 233, ehdh, Resultset:, Resultvalue: hsh, 23,hhs}→ 提取内容为空,替换为Null→ 组合成Resultset: Null - 输入:
Null→ 直接返回Null - 输入:
{hashvalue: 233, ehdh, Resultvalue: hsh, 23,hhs}→ 找不到Resultset:,返回Null
最终输出正好是你想要的:
- Resultset: 234, edf, ejj
- Resultset: 2dd34, edf, ejj
- Resultset: 2dd34
- Resultset: Null
- Null
- Null
额外处理提示
在实际代码里,记得加上这几个特殊情况的判断:
- 如果输入本身就是
Null,直接返回Null - 如果正则匹配不到
Resultset:相关内容,返回Null - 如果匹配到的内容是空(比如
Resultset:后面直接跟其他键或}),把空值替换成Null
内容的提问来源于stack exchange,提问作者Selva
相关产品推荐
相关产品推荐

