Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中键值的正则表达式_Java_Regex - Fatal编程技术网

java中键值的正则表达式

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+)( *)

我正在尝试用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+)( *):( *)(\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+)/