-2

我需要一些关于正则表达式的帮助。如果字符在分号之后并且在前一个单词的同一行中,我需要一个与字符匹配的正则表达式。

让我解释一下:

在此处输入图像描述

我需要这样的东西。我必须创建一个不允许在同一行的分号后引入字符的函数,我想我可以用这种 RegEx 来做到这一点。

谢谢你。

4

3 回答 3

2

我不确定我是否理解你的问题,但这样的事情会有所帮助吗? 这个正则表达式

于 2021-02-26T14:20:59.107 回答
1

好吧,你有两种方法可以做到:

  • A : 创建一个正则表达式来验证正确的输入。

  • B:创建一个正则表达式来查找不正确的输入。

我会使用选项 1,但这取决于您需要做什么。

A:正则表达式验证正确的行

在这种情况下,我们将使用m修饰符将正则表达式引擎设置为按行搜索(m = 多行)。这意味着^匹配一行的开头并$匹配一行的结尾。

然后我们要匹配一些不是分号本身的字符。为此,我们使用[^ ]组,意思是“不在提供的字符列表中的任何内容”。所以说除了分号之外的任何字符,我们都必须使用[^;].

现在,这个字符并不孤单,因为它们可能很多。为此,我们可以使用*+运算符分别表示“0 次或多次”和“1 次或多次”。如果分号之前的数据是强制性的,那么我们将使用+运算符。这导致[^;]+说任何不是分号的字符 1 次或更多次。

然后我们将与()操作员一起捕捉这一点。这将让我们可以直接访问该值,而不必自己取行并删除带有截断的分号。

在此捕获之后,我们有分号,然后可能有一些空格,然后是行尾。对于后面的空间,这取决于你。可以\s*说任何类型的空格、制表符或空白字符 0 或 n 次。

最后我们得到这个正则表达式:^([^;]+);\s*$带有mg标志

m对于多行和g全局,这意味着不要在第一场比赛中停下来,而是寻找所有比赛。

在这里测试它:https ://regex101.com/r/sT59eu/1/

B:正则表达式查找无效行

好吧,这也很容易:;.+$

.表示任何字符。所以在这里我们会找到分号后面有东西的行。

在这里测试它:https ://regex101.com/r/ocDofm/1/

但是你不会找到缺少分号的行!

于 2021-02-26T14:31:48.617 回答
1

如果我理解正确, (?<=;)[A-Za-z]+ 可能会完成您的工作。python 文档很有帮助:https ://docs.python.org/3/library/re.html

于 2021-02-26T14:26:53.483 回答