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



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

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

#*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$]

它不读取字符串空格。

如果要在字符串的开头匹配#*并获取以下内容,则可以使用捕获组。请注意,要获取字符类之外的开头字符并转义*

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

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

正则表达式演示

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

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

正则表达式演示

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

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

正则表达式演示

试试这个正则表达式。 它将在#*#c#@之后捕获:

#[*c@]K[S].*$

这是演示

这是您正在寻找的正则表达式:

^#*(.*)$

你可以在这里测试

解释:

^     // start at the beginning of the line
#*   // match the literal '#*'
(.*)  // match any character that follows
$     // until the end of the line

相关内容

最新更新