用于在大型文档中查找特定模式的C#复杂正则表达式

时间:2016-04-27 03:42:18

标签: c# regex matching

我试图想出一个正则表达式,它将捕获带引号的文本,后跟一组包含圣经经文引用的括号。这是一个包含基督教书籍中引用圣经经文的章节的文件可以使它的经文与任何所需的圣经翻译相匹配和替换。

我在这方面遇到了很多麻烦。我只能提出部分工作的模式。这是一个给我带来麻烦的示例文本。

  

"做门徒" - 要建立像基督一样受到约束的人,​​他们不仅要遵循,而且要引导别人遵循他的道路。只有作为门徒,委员会的其他活动才能实现其目的。为收获者祈祷领导力是重点。耶稣已经通过他自己的事工证明,被欺骗的群众已经成熟为收获,但没有精神牧羊人带领他们,他们怎么可能获胜? "因此,请你为收割的主祷告,"耶稣提醒他的门徒,并且他会把工人送到他的收获中#34; (马太福音9:37,38;路加福音10:2)。更多文字在这里。

这是我现在最好的正则表达式。

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

我提出的所有正则表达式只会在没有发生这种情况的情况下捕获这种模式。这样做的问题是,它将捕获第一个引用,然后是最后一个引用,直到最后的parens,然后是那些parens和经文。然而,对于这个例子,我只希望它能够捕捉到他会将劳动者送进他的收获中#34; (马太福音9:37,38;路加福音10:2)。

任何想法?????这是否可以使用正则表达式?

另外,对于这里的圣经引用感到抱歉,我只是对解决这个有点复杂的问题感兴趣。

Here is a link to what I have so for.

1 个答案:

答案 0 :(得分:0)

试试这个

("[^"]+"\s*\([^)]+\))

Regex demo

或者

"([^"]+)"\s*\(([^)]+)\)

Regex demo

<强>解释
( … ):捕获小组sample
[^x]:一个不是x sample的字符 +:一个或多个sample \s:&#34;空格字符&#34;:空格,制表符,换行符,回车符,垂直标签sample
*:零次或多次sample
\:转义特殊字符sample