Regex 查找不以“quot”开头的字符串的正则表达式;在数字之前

Regex 查找不以“quot”开头的字符串的正则表达式;在数字之前,regex,visual-studio-code,Regex,Visual Studio Code,我有一根这样的绳子 1 2 3 4 5 "Test test" 1 2 3 4 5 Test test" 我需要找到第二个字符串,它不以“和”开头,然后才有数字 我读了很多关于堆栈溢出的主题,但是我没有找到适合我的答案。 Reg exp必须为txt使用visual studio代码。 非常感谢你的帮助 我试过: ^(?![0-9]+\t[0-9]+\t[0-9]+\t[0-9]+\t[0-9]+") 但是它不起作用。你很接近了。你需要将外部的[]更改为()。你还需要将*放在负前瞻之后,以便

我有一根这样的绳子

1 2 3 4 5 "Test test"

1 2 3 4 5 Test test"
我需要找到第二个字符串,它不以“和”开头,然后才有数字

我读了很多关于堆栈溢出的主题,但是我没有找到适合我的答案。 Reg exp必须为txt使用visual studio代码。 非常感谢你的帮助

我试过:

^(?![0-9]+\t[0-9]+\t[0-9]+\t[0-9]+\t[0-9]+")

但是它不起作用。

你很接近了。你需要将外部的
[]
更改为
()
。你还需要将
*
放在负前瞻之后,以便在前瞻失败时匹配行的其余部分

数字之间没有制表符,而是有空格,所以
\t
应该是
\s

^(?![0-9]+\s[0-9]+\s[0-9]+\s[0-9]+\s[0-9]+\s+").*

您非常接近。您需要将外部的
[]
更改为
()
。您还需要将
*
放在负前瞻之后,以便在前瞻失败时与行的其余部分相匹配

数字之间没有制表符,而是有空格,所以
\t
应该是
\s

^(?![0-9]+\s[0-9]+\s[0-9]+\s[0-9]+\s[0-9]+\s+").*

匹配不存在的内容可能很棘手,因为所有与模式不匹配的内容都与该模式的否定匹配

您要查找的是一行数字,后跟一行空白,并且这个序列本身会重复

(\d+\s+)+
您希望上面的内容后面跟着任何不以数字、空格或双引号字符开头的
*

把它放在一起

(\d+\s+)+([^\d\s"].*)
您还可以使组不被捕获。这没有逻辑效果,但内存效率更高,因为它在搜索潜在的解析树时不存储已解析的组。这对于大型文档非常重要,尤其是当反向引用导致深度递归时

(?:\d+\s+)+(?:[^\d\s"].*)

匹配不存在的内容可能很棘手,因为所有与模式不匹配的内容都与该模式的否定相匹配

您要查找的是一行数字,后跟一行空白,并且这个序列本身会重复

(\d+\s+)+
您希望上面的内容后面跟着任何不以数字、空格或双引号字符开头的
*

把它放在一起

(\d+\s+)+([^\d\s"].*)
您还可以使组不被捕获。这没有逻辑效果,但内存效率更高,因为它在搜索潜在的解析树时不存储已解析的组。这对于大型文档非常重要,尤其是当反向引用导致深度递归时

(?:\d+\s+)+(?:[^\d\s"].*)

关于所需的内容,我做了以下假设

  • 字符串必须以一个或多个数字的一个或多个实例开头,后跟1个或多个空格;以及
  • 一个或多个数字后跟一个或多个空格的最后一个实例后面必须跟一个不是数字、空格或双引号的字符
这可以通过以下正则表达式进行测试

^(?:\d+ +)+[^"\d ].*$

如链接所示,此正则表达式匹配下面的最后三个字符串,但不匹配前三个字符串

1 2 3 4 5 "Test test
11 22 33 44 "Test test"
 11 22 33 44 The test"

1 2 3 4 5 Test test"
1 2 3 4 5 The "Test test"
11 22 33 44    The "Test test"

关于所需的内容,我做了以下假设

  • 字符串必须以一个或多个数字的一个或多个实例开头,后跟1个或多个空格;以及
  • 一个或多个数字后跟一个或多个空格的最后一个实例后面必须跟一个不是数字、空格或双引号的字符
这可以通过以下正则表达式进行测试

^(?:\d+ +)+[^"\d ].*$

如链接所示,此正则表达式匹配下面的最后三个字符串,但不匹配前三个字符串

1 2 3 4 5 "Test test
11 22 33 44 "Test test"
 11 22 33 44 The test"

1 2 3 4 5 Test test"
1 2 3 4 5 The "Test test"
11 22 33 44    The "Test test"

什么编程语言?你真的在使用
Qt
QRegularExpression
类吗?例如,在一个txt上的Visual Studio代码中使用。使用一个与后跟
的数字和空格序列相匹配的负前瞻“
StackOverflow不是免费的编码服务。你应该会的。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。有关更多信息,请参阅,并选择:)什么编程语言?您真的在使用
Qt
QRegularExpression
类吗?以在Visual Studio中使用txt代码为例。使用与后跟
StackOverflow不是免费的编码服务。你应该会的。请更新您的问题,以显示您已在某个应用程序中尝试过的内容。有关更多信息,请参阅并选择:)这可以更短。这与以下字符串匹配,
1 2 3“测试测试”
1 2 3“测试测试”
1 2 3 4 5 6“测试测试测试”
1 2 3“测试测试”
1 2 3 4 5“测试测试测试测试”“
。这可能是人们想要的行为,但问题还不够具体,无法做出决定。Toriga,这是一个给你的问题:“你想让我列出的字符串匹配吗”?这可以短一些。
^(?(?:\d+\s){5}\s*”。
这匹配以下字符串,
123“Test Test Test”
“Test Test Test Test”
123456“Test Test Test Test Test Test”
123“Test Test Test Test”
12345“Test Test Test Test Test Test Test Test Test”“
。这可能是人们想要的行为,但问题还不够具体,无法做出决定。Toriga,这是一个给你的问题:“你想让我列出的字符串匹配吗”?我建议使用\s而不是文字空格。选项卡上的规范不明确,这意味着如果您不处理它们,它们将出现,而且\s比文字空间更容易阅读,因为文字空间非常容易受到花哨编辑器的“帮助”。@Peter,这些都是有效的点,但有时用于匹配空间的
\s
会通过匹配换行而导致问题,这也是一个考虑因素。当然,人们总是可以编写
[\t]
。如果你使用一个有自己想法的编辑器,我会认为它的设置需要调整,或者是时候改变了