indesign连续逗号的GREP

问题描述:

对于我手边挑战的更广泛范围,我一直在寻找一个可用的InDesign GREP语句来帮助自动将连续逗号从非牛津风格转换为牛津逗号(反之亦然)。indesign连续逗号的GREP

为了简化SE社区的这个问题,我将限制使用GREP来查找非牛津风格逗号的挑战。

我用了两个表达式,它们都汲取了太多的内容:

  1. 从我自己的发展:
     
    ,(.*?),(.*?) and (.*?) 
    

结果:

,和检测生命体征的可能性,生物标志物,占据了许多研究人员的想法。使用下一代大口径光学望远镜,这种测量可能是可能的。回望大爆炸,我们现在正处于测量量子效应在通货膨胀时代产生的引力波影响的边缘,这是宇宙以前所未有的速度扩张的时代。除了产生重要的新知识,现代天文学 既利用和

  1. 从InDesign的用户版面

    (?<=\w,)(.+)(.*?)(?= and)

  2. 结果:

    和检测生命体征的可能性,biomarke rs,占据了很多研究人员的想法 。使用下一代大口径光学望远镜,这种测量可能是可能的。回望大爆炸,我们现在正处于测量量子效应在通货膨胀时代产生的引力波影响的边缘,这是宇宙以前所未有的速度扩张的时代。除了产生重要的新知识,现代天文学 既利用

    正如你可以看到没有结果拿起一个顿号和两者都过于宽泛是有效的。

    我一直在努力,但在网上找不到合理的解决方案。我认为我会认同SE社区的伟大思想,包括正则表达式的编程人员和其他GREP工具的用户。

    我提前感谢您的时间。

开始=>
+0

怎么样',\ s * \ w +(?:\ s + \ w +)*,\ s * \ w +(?:\ s + \ w +)*和\ b'?你有什么规格?测试用例? –

+0

我不会在您的示例短语中找到牛津的逗号。你能指出他们吗? – usr2564301

+0

@WiktorStribiżewWiktor,我认为你的代码迄今为止缩小了范围,但它仍然在撷取短语等。我怀疑英语太复杂了,不允许自动化来解决所有问题。尽管如此,缩小文本将有助于解决我的问题。感谢您。 – Parapluie

我认为问题太广泛,找到100%的工作解决方案几乎是不可能的。为了摆脱最明显的误判,您可以使用以下模式:

,\s*\w+(?:\s+\w+)*,\s*\w+(?:\s+\w+)* and\b 

或者更换\w\p{L}只匹配字母:

,\s*\p{L}+(?:\s+\p{L}+)*,\s*\p{L}+(?:\s+\p{L}+)* and\b 

regex demo

详细

  • , - 逗号
  • \s* - 0+空格
  • \p{L}+ - 1+字母
  • (?:\s+\p{L}+)* - 1+空格和零个或更多个序列1+字母
  • ,\s*\p{L}+ - 与上面相同
  • (?:\s+\p{L}+)* - 与上述相同的
  • +and\b - 1+空间,随后与and作为一个整体字(\b是一个字边界)。

这可以进一步增强,以适应更具体的上下文。