java中键值的正则表达式
我正在尝试用java为以下字符串创建regExp:java中键值的正则表达式,java,regex,Java,Regex,我正在尝试用java为以下字符串创建regExp: key:value key:"value" key:'value' key : value key :"value 123" key: 'value 123' 每个条件都可以在一行中: key:value key : value key : "value 123" 我必须匹配它们中的每一个,捕捉关键点和值,修剪并没有引号 不幸的是,java在正则表达式中不支持条件 有人能帮我吗 提前感谢。此模式应满足以下要求: (\w+)( *)
key:value
key:"value"
key:'value'
key : value
key :"value 123"
key: 'value 123'
每个条件都可以在一行中:
key:value key : value key : "value 123"
我必须匹配它们中的每一个,捕捉关键点和值,修剪并没有引号
不幸的是,java在正则表达式中不支持条件
有人能帮我吗
提前感谢。此模式应满足以下要求:
(\w+)( *):( *)(\w+|(["'])([\w\s]+)\5)
这应该适合您的需要():
(\w+\s*:\s*(?:(?!\w+\s*(?)?
第一组包含键,第二组包含值
我添加了一种方法来管理值中嵌套的:
:只需使用\
对其进行转义即可
不过,您仍然需要调整结果。您可以使用以下正则表达式:
/(\w+)\s*:\s*(((['"]).+?\4)|\w+)/
第1组将是您的关键,第2组将是您的价值所在
现场演示:不明白你的问题。你想让字符串变成一行吗?(因为我不明白你真正想要的是什么)您能提供一个输入和所需输出的示例以满足您的需要吗?您的问题不是很清楚。我的匹配器必须有多个查找,每个查找有两个组,即键和值。不工作示例:([\w\d]+)\s*:\s*(.+),因为如果我在一行上有多个查找,它将匹配所有的行,但不匹配键:“value或key:value'Hmmm。修复了其中的一个错误。但是我不确定它应该为您注释的值找到哪一对。我现在使用的正则表达式找到了第二个,并忽略了第一个。这就是您想要的吗?我不确定您是询问嵌套的键值对还是不匹配的引号。可能添加\s*?(\\w+\\s*:\\s*(?:)。(?!\\w+\\s*:)*)
/(\w+)\s*:\s*(((['"]).+?\4)|\w+)/