正则表达式只提取字符串之后和空格之前的文本

use*_*415 16 regex

我希望在给定字符串后匹配文本.在这种情况下,以"BookTitle"开头但在第一个空格之前的行的文本:

BookTitle:HarryPotter JK Rowling
BookTitle:HungerGames Suzanne Collins
Author:StephenieMeyer BookTitle:Twilight
Run Code Online (Sandbox Code Playgroud)

期望的输出是:

HarryPotter
HungerGames
Run Code Online (Sandbox Code Playgroud)

我试过了,"^BookTitle(.*)"但它给了我比赛,其中BookTitle:在线的中间,还有所有的东西在空白之后.有人帮吗?

Joh*_*Woo 26

你可以拥有positive lookbehind自己的模式.

 (?<=BookTitle:).*?(?=\s)
Run Code Online (Sandbox Code Playgroud)

有关更多信息:Lookahead和Lookbehind零宽度断言

  • @ user1899415它将在python上运行.[点击这里](http://i.stack.imgur.com/CyELE.jpg) (4认同)

Edw*_*ard 6

这是什么语言?
请提供一些代码; 使用^锚点你肯定只能匹配以BookTitle 开头的字符串,所以其他错误.
如果您可以保证从标题中删除所有空格,就像在示例中一样,那么^BookTitle:(\S+)应该使用多种语言.
说明:
^如您所知,要求匹配从字符串的开头开始.
\s- *lower*case表示:匹配白色*s*pace(空格,制表符等)
\S- *upper*case表示逆:匹配任何内容但是空格.
\w另一种可能性是:匹配*w*ord字符(字母数字加上下划线) - 但是如果标题中有撇号,则会失败.
+如你所知,量词意味着"至少有一个".
希望有所帮助.


小智 5

使用“多行”正则表达式选项,使用如下所示的内容:

 ^BookTitle:([^\s]+)  
Run Code Online (Sandbox Code Playgroud)

如果没有多行选项,则:

 (?:^|\n)BookTitle:([^\s]+)
Run Code Online (Sandbox Code Playgroud)