Skip to main content
 首页 » 编程设计

python之使用带行数的 Python 正则表达式

2024年08月26日24daizhj

这是我的测试代码:

\thinhline 
\\[-16pt] 
Jacobi 
  & $\JacobiP{\alpha}{\beta}{n}@{x}$ 
  & $(-1,1)$ 
  & $(1 - x)^{\alpha} (1 + x)^{\beta}$ 
  & $\begin{cases} \ifrac{2^{\alpha+\beta+1}\EulerGamma@{\alpha+1}\EulerGamma@{\beta+1}}{\EulerGamma@{\alpha+\beta+2}}, &\text{$n = 0$} \end{cases}$ 
  & $\begin{cases} \ifrac{2^{\alpha+\beta+1}\EulerGamma@{\alpha+1}\EulerGamma@{\beta+1}}{\EulerGamma@{\alpha+\beta+2}}, & \text{$n = 0$}\end{cases}$ 
  & $\dfrac{\pochhammer{n+\alpha+\beta+1}{n}}{2^n n!}$ 
  & $\dfrac{n (\alpha-\beta)}{2n+\alpha+\beta}$ 
  & $\alpha,\beta > -1$ 
 
  \\ 
\thinhline 
\\[-16pt] 
Ultraspherical(Gegenbauer) 
  & $\Ultraspherical{\lambda}{n}@{x}$ 
  & $(-1,1)$ 
  & $(1 - x^2)^{\lambda-\frac{1}{2}}$ 
  & $\dfrac{2^{1-2\lambda} \pi \EulerGamma@{n+2\lambda}} 
           {(n+\lambda) \left( \EulerGamma@{\lambda} \right)^2 n!}$ 
  & $\dfrac{2^n \pochhammer{\lambda}{n}}{n!}$ & $0$ 
  & $\lambda > -\tfrac{1}{2}, \lambda \ne 0 $ 
\\ 

我创建了一个模式来识别“\thinhline\\[-16pt]”和“\\”之间所有内容的模式。

我如何找到找到的模式实例中以“&”开头的行的行数?

例如,我想为示例代码返回这个:

Jacobi: 8 
Ultraspherical(Gegenbauer): 6 

请您参考如下方法:

尝试使用 MULTILINE (re.M) 标志的正则表达式 ^\s*&:

import re 
 
text = """ 
  & $\Ultraspherical{\lambda}{n}@{x}$ 
  & $(-1,1)$ 
  & $(1 - x^2)^{\lambda-\frac{1}{2}}$ 
  & $\dfrac{2^{1-2\lambda} \pi \EulerGamma@{n+2\lambda}} 
           {(n+\lambda) \left( \EulerGamma@{\lambda} \right)^2 n!}$ 
  & $\dfrac{2^n \pochhammer{\lambda}{n}}{n!}$ & $0$ 
  & $\lambda > -\tfrac{1}{2}, \lambda \ne 0 $ 
 
""" 
 
print(len(re.findall('^\s*&', text, re.M))) 

打印6,这是以&开头的行数