2017-08-24 22 views
0

我现在有this validation expression,我使用来验证一个完整的字符串:(感谢许多人,包括@CinCout如何在不中断当前验证的情况下在每行末尾添加符号?

^((P * \开始{(矩阵|矩阵* | pmatrix | pmatrix *? | | bmatrix | bmatrix * | Bmatrix | Bmatrix * | vmatrix | vmatrix * | Vmatrix | Vmatrix * | \ left | \ right)}(?:{c +})?\ s(?:(?: * one | two | three ){0,3} ( - ?\ d *)?(?: &?|(\\ * \ n)))+ * \ end {\ g} \ s?)| \ s \ $ \ s *(?P> matrix)\] \ s *(?P> matrix)* \ $ \ * \ $ \ $ \ s(?P> matrix)\ $ \ $ | \ s \ [\ \ s \(\ s *(?P> matrix)* \))$

我目前强制用户在每行数字后输入“\”。我意识到这对我来说不起作用,因为最后一行数字通常没有“\”。

前段时间有人告诉我,用正则表达式很难保持计数。这意味着正则表达式不可能知道最后一行是什么。所以我唯一的选择是让这些“\”是可选的。

我试过几乎所有的试验和错误(因为我仍然是一个初学者),使这些“\”可选,而不会中断我的其他验证。 (我不想让任何其他地方的换行符,然后我现在允许他们。)有人可以看看我的正则表达式验证,并帮助我吗?我想,我需要重新安排一些括号,但我放弃了每一个组合...

这里有一对夫妇的文本的例子我想通过:

$$ 
    \begin{matrix}{ccc} 
    10000 &  4 & 3 
    1 & -2 & 4 
1 & 2 & 5 
    \end{matrix} 
$$ 


     $$ 
\begin{pmatrix} 
1 & & 3 \\ 
1 && two 4 \\ 
    one1 & 2 & -5 
\end{pmatrix} 
$$ 

$$ 
\begin{pmatrix} 
1 & 2 & 3 \\ 
1 & 2 & 4 \\ 
1 & 2 & -5 
\end{pmatrix} 
$$ 


$$ 
\begin{pmatrix} 
1 & 2 & 3 
1 & 2 & 4 
1 & 2 & -5 
\end{pmatrix} 
$$ 

这里是什么我不希望通过:

$$ 

\begin{pmatrix} 

1 & 
2 & 3 \\ 
1 & 
2 & 4 \\ 
1 & 2 & 
-5 \\ 

\end{pmatrix} 
$$ 


$$ 
\begin{pmatrix} 

1 & 2 & 3 \\ 
1 & 2 & 4 \\ 
1 & 2 & -5 \\ 

\end{pmatrix} 
$$ 

基本上我不想让任何跳过线行完成或双跳过线的任何位置之前,同时保持一切完好无损。

包含数字应当在这些方式1结束的每一行:

1)的行与多个

2)行结尾结束 “\”

3)的行与“& &”或结束“& &”

我总是试图给用户尽可能多的空间,因为他们要在元素之间的连排结束后。

我将不胜感激!

回答

1

Here是你更新的正则表达式。

^((?P<matrix> *\\begin{(?<token>matrix|matrix\*|pmatrix|pmatrix\*|bmatrix|bmatrix\*|Bmatrix|Bmatrix\*|vmatrix|vmatrix\*|Vmatrix|Vmatrix\*|\\left|\\right)}(?:{c+})?\s(?:(?: *one|two|three){0,3} *(-?\d* *)?(?:& ?|((?:\\\\)? *\n)))+ *\\end{\g<token>} *\s?)|\s*\$\s*(?P>matrix) *\$| *\$\$\s(?P>matrix) *\$\$|\s*\\\[\s*(?P>matrix) *\\\]|\s*\\\(\s*(?P>matrix) *\\\))$

所有你想要的是让尾部双斜线\\可选。所以我把它们放在一个非捕获组(?:)中,并使用一个?量词使他们的存在成为可选项。

+0

我试过了,但它破坏了验证的其余部分。例如现在你可以在数字和行之间有换行符。在这个问题中,我忘记提及如果可能的话,我不想在这些地方换行。 – justinpees

+0

编辑您的问题以提供您想要通过的文本示例,以及您不需要的文本示例。 – CinCout

+0

我在编辑中提供了一些示例。 – justinpees

相关问题