【发布时间】:2019-11-26 13:13:55
【问题描述】:
我正在尝试运行正则表达式来捕获以下字符串的键和值:
name="Evoke Sprite" parent="EvokeObjects" instance=ExtResource( 5 ) id=5
这里有一些语法注释如下:
- 键:一串字母,没有空格
-
价值观:
- 可能有引号,例如。 “唤起对象”
- 引号内可能有空格
- 引号内可能有特殊字符,例如“hello/world@!18”
- 可能有类似字符串 ("ExtResource( 5 )") 的函数。
- 函数字符串的括号内有空格
我已经知道在引号中有空格了:
(.*?)=(?:"(.*?)"|(.*?))(?: |$)
所以这将适用于
name="Evoke Sprite" parent="EvokeObjects" id=5
要测试的正则表达式101:https://regex101.com/r/xkRRsD/1
当我添加ExtResource( 5 ) 时会出现问题,因为它在括号内有空格。那么前面的正则表达式代码就失败了。
作为一种可能的解决方法,我在想也许我可以通过在代码中进行字符串替换来完全删除括号中的空格。但我想知道是否有正则表达式解决方案?
【问题讨论】:
-
"一串文本,没有空格" 你的意思是一串字符,还是一串字母?无论哪种方式。
.*?不是,因为它包含空格。 -
如果输入是
#$%^=*@( !<>),那是一个有效的键#$%^/值*@( !<>)组合吗? -
你能有没有
"即key=some value some random value的字符串字符串作为值吗 -
@CodeManiac 在这种情况下,如果它需要空格,它将带有引号,所以我不必担心这种情况。
-
@Andreas 很可能只有字母。不会有任何特殊字符,也不会有任何数字。对于值,带引号的字符串可以包含特殊字符,例如
"hello/world@!"。