2017-08-22 24 views
0

我有这个正则表达式验证表达式(感谢ClasG和Marvel308):请参阅链接的例子。如何使用正则表达式在特定的地方允许(但不要求)特定的单词?

^((?P\begin{(?\w+)}\s*(?:-?\d+\s*(?:&\s*|\\n))+\end{\g})|\$\s*(?P>matrix)\s*\$|\$\$\s*(?P>matrix)\s*\$\$|[\s*(?P>matrix)\s*]|(\s*(?P>matrix)\s*))$

在包含每一行的开始 - ?\ D的(数字)我想允许(但不要求)词“\左(”而在每行的末尾包含 - ?\ D我希望允许(但不要求)单词“\ right”“我如何编辑此验证表达式来满足此?

回答

1

下应该做的:

^((?P<matrix>\\begin{(?<token>\w+)}\s*\n(?:(?:\\left\()?\s*-?\d+\s*(?:&\s*|\\\\\s*(?:\\right\))?\n))+\\end{\g<token>})|\$\s*(?P>matrix)\s*\$|\$\$\s*(?P>matrix)\s*\$\$|\\\[\s*(?P>matrix)\s*\\\]|\\\(\s*(?P>matrix)\s*\\\))$

Demo

修改:

  1. \n(?:\\left\()?\s*添加,对于零和一非捕获组的存在的“左”部分的检查。

  2. 添加了\s*(?:\\right\))?,另一个检查“正确”部分的非捕获组是否存在。

+0

谢谢,我编辑我的正则表达式,而不是:https://regex101.com/r/Cq9QDX/8 我唯一的问题是,最后一行数字不应该有“\\”在最后。有什么方法可以满足这个吗? – justinpees

+0

没关系我也修复过了:)我很快赶上了!感谢大家。我还有一件事情需要改变,我会编辑我的问题,我会在什么时候通知你。 – justinpees

+0

如何创建一个组并允许一系列不同的单词被允许?例如,就在我允许表达一个数字之前,我想允许(但不要求)列出的一个或多个单词。我猜测它看起来和(?:\ \ right \)类似)?但添加了| (或)在单词之间? – justinpees

1

您可以添加非捕获与?量化组,允许组配1或0次:

(?:\\left\()?

(?:\\right\))?

+0

非常感谢!我会让你知道,如果我可以把它放在正确的地方:)(我对此比较新。)另外,我怎样才能允许(?:\\ left \()?和(?:\\是否有一种简短的方式来表达这个? – justinpees

+0

是的,祝你好运!你可以使用'[\(\ []'。在regex101.com的右下方有一个快速参考,常见的令牌是相当的有用的记住:) – rubystallion

相关问题