regex - 如何修复此字符串的正则表达式 "#*abc"我想匹配这个确切的字符串,其中 abc 也可以是任何包含空格的单词

标签 regex

我想使用正则表达式从文件中读取特定字符之间的多个字符串。我已经尝试了以下代码,但无法获得预期的结果。

我的输入文件包含以下格式的数据:

#*OQL[C++]: Extending C++ with an Object Query Capability

#@José A. Blakeley

#t1995

#cModern Database Systems

#index0

#*Transaction Management in Multidatabase Systems

#@Yuri Breitbart,Hector Garcia-Molina,Abraham Silberschatz

#t1995

#cModern Database Systems

#index1

预期输出:

OQL[C++]: Extending C++ with an Object Query Capability

Transaction Management in Multidatabase Systems

我尝试了什么

    [^#*][a-z]\w+[\n$]

它没有读取字符串空格。

最佳答案

如果您想匹配字符串开头的 #* 并获取后面的内容,您可以使用捕获组。注意获取字符类之外开头的字符并转义\*

要匹配空格,您可以使用以空格开头的重复模式。要匹配示例中的所有单词,您可以使用 character class允许匹配哪些字符。

^#\*([a-zA-Z][+:a-zA-Z\]\[]+(?: [+:a-zA-Z\]\[]+)*)

Regex demo

或者作为替代方案,使用积极的回顾:

(?<=^#\*)[a-zA-Z][+:a-zA-Z\]\[]+(?: [+:a-zA-Z\]\[]+)*

Regex demo

要匹配任何一个字符,您可以使用字符类

^#[*@c]([a-zA-Z][+:a-zA-Z\]\[]+(?: [+:a-zA-Z\]\[]+)*)

Regex demo

关于regex - 如何修复此字符串的正则表达式 "#*abc"我想匹配这个确切的字符串,其中 abc 也可以是任何包含空格的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57141270/

相关文章:

c++ - 如何检查哪个匹配组被用来匹配(boost-regex)

php - 在 PHP 中使用 Gruber 的正则表达式进行网址匹配

php - 使用 php 从源代码中提取 css 类和 ID

javascript - 从 JavaScript 中提取数据(Python Scraper)

regex - Powershell 替换精确的字符串

python - 除了所有输入数据之外,还将 re.findall() 输出到 CSV

Javascript:从字符串中删除尾随字符(如果它们是非数字)

python - 在 Python 中将正则表达式与 fileinput 结合使用会出现错误

javascript - 使用 RegEx 防止前导空格

php - 在php中获取子字符串的正则表达式