在正则表达式中忽略或跳过括号内的所有文本和数字

5
我正在尝试使用正则表达式从圣经注释中读取一些文本,其中一些括号内含有许多引用和参考文献(例如其中一篇注释几乎用括号内的圣经段落支持他所说的一切,在神学上是好的,但为了阅读和享受早晨的散步并不理想)。因此,当我听取这些文本时,我想忽略它们(括号内的内容),如果需要,稍后我会跟进它们。以下是我现在正在阐述的示例文本:
“圣经清楚地教导上帝爱全世界(见:约翰福音3:16和其他圣经书1:3-7,9),而不仅仅是以色列。”
我只想在播放应用程序时听到以下短语:
“圣经清楚地教导上帝爱全世界,而不仅仅是以色列。”
请问我需要输入什么“模式”?(所有那些对程序员有意义但对我没有意义的奇怪字符)。我正在使用一个名为@Voice Aloud的Android应用程序。

1
(...)替换为空字符串,即string.replaceAll("\\([^)]*\\)", ""); - Avinash Raj
1
这个应用程序有正则表达式的设置吗?或者你计划以某种方式修改它的代码,还是……? - Nathan Tuggy
如果你可以访问并修改文本,或者拥有代码的访问权限,我们可以帮助你解决问题 - 如果没有,就很难处理了! - Docteur
2个回答

2

如果你能够更改文本、代码或输入正则表达式,那么你所要求的是完全可行的!

更改文本或代码

你需要使用像这样的东西:

String s = "The Bible teaches clearly that God loves the whole world (See: John 3:16 and OtherBibleBook 1:3-7,9), not just Israel."

string.replaceAll("\\(.*?\\)", "");

//ouput : The Bible teaches clearly that God loves the whole world , not just Israel.

输入正则表达式

这里的正则表达式是 \(.*?\)。你可以在这里检查,它匹配括号中的所有内容。然后你可以使用替换模式将其删除。根据应用程序使用的正则表达式的风格,您可能需要使用特定的东西 - 由于Android使用Java,它只会要求您提供替换字符串:" "。

如果你想在括号之前去掉空格,你可以使用以下正则表达式:

\s{0,1}\(.*?\)

或者在Java代码中:

string.replaceAll("\\s{0,1}\\(.*?\\)","");

谢谢您,Docteur。我将在Android的@VoiceAloud、iPad的VoiceDreamer和Win8的TextAloud中尝试使用正则表达式代码。这些应用程序以略微不同的方式接受RegEx代码。我相信它们至少会在其中一个应用程序中起作用。 - Carlos Chapa

0

因为您正在使用@Voice Aloud Android应用程序,所提供的大多数示例不能干净地适用于您的问题。

这是您需要输入到应用程序“编辑语音”设置中的正则表达式:

\(See:.*\)

假设@Voice正在阅读您文档中的所有引用,这是一种尝试跳过引用以改善口述的方法。

我还附上了使用@Voice v7.8.6的示例截图。

最好的问候,


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接