regex 正则表达式匹配X,只有一个给定的Y在它之前(直到字符串的开头)

23c0lvtd  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(124)

我有一些数据,其中字段可能是文字值,或者是用花括号表示的表,类似于Lua语法:

a = 4

b = {

}

我需要一种方法来确定文本的第一个字段是否是一个表。要做到这一点,我需要确定是否有一些{,它前面正好有一个=,没有更多。第二个=表示我们已经传递了一个不是表的字段。
负的后向看起来仍然匹配,除非=在匹配之前。这是捕获B的花括号:

={1}\s+{

编辑:关于假定的重复Regex matching exactly 1 of a specific character(s)
这个问题是问如何使正则表达式匹配'@something'而不是'@@ something',即只允许一个前“@”。我的问题是关于在前面的字符串中找到一个'=' ANYWHERE,不一定在匹配之前。因此:= blahblahsomething {将匹配"“,但== blahblahsomething {将给予不匹配。

qpgpyjmq

qpgpyjmq1#

将前面的字符限制为一个=

^[^={\n\r]*=[^={\n\r]*\{

请参见live demo
{在否定字符类中,以确保它是 * 第一个 * {,前面正好有一个=
添加行结束字符以确保匹配项都在一行上。

相关问题