所以我目前正在学习正则表达式,并在这里尝试练习:https://regex.sketchengine.co.uk/cgi/ex4.cgi
特别是,我能够匹配左边的每一行(没有匹配右边的任何行),除了以下行:
mess! He did not let it
我知道这一定是一个可怕的答案,但这就是我所拥有的:
^[mbadhi][^n]..[^W]([a-zA-Z'") ]+[.!?][a-zA-Z'") ]+)
我不明白(除了它为什么不起作用),就是当我删除' n'在[^ n]里面,它匹配句子(但也是右边的一部分)。我必须遗漏一些非常基本的东西,因为我的理解是^ [mbadhi]应该匹配以这些字母之一开头的任何一行的第一个字符,然后是任何不是字母的第二个字母&n; #39 ;. '我'从混乱中应该匹配,不是吗?
答案 0 :(得分:1)
你试图解决的问题有点蹩脚,因为没有办法确定一个列与另一个列格式化的方式。所以,答案完全是数据特定的。我认为你不会在实践中看到这一点。
无论哪种方式,这都有效:
(^[amhd].*$|^it.*$|^but w.*$)
回答你的问题;如果您在n
[^n]..[^W]
中取出[^]..[^W]
,则会导致第一个]
成为character class
选择的一部分,即您说的是;不是以下任何字符]..[^W
要再次声明,删除n
会导致第二个]
成为结束character class
分隔符,而不是紧接在第一个^
之后的分隔符。
这就是为什么它在以下几行的第二个句号之后停止:
assumes word senses. Within in the U.S.
A。,人们经常
always thought so.) Then but W. G.
格蕾丝从来没有多少
答案 1 :(得分:0)
演习要求你解决的内容,如引用:
......一个句子结束,另一个句子开始......
但是你的回答似乎没有做任何接近它的事。
如果你想自己解决一些提示:
. ) ! ? ' "
一句话以前一句结尾开头,后跟空格,跟进大写字母
有一个例外,即缩写可以写成一个大写字母,然后是句号,后跟空格。
我能解决这个问题的解决方案(显然不是最好的)是(扰乱者改变):
^.*(?<![A-Z])[.\?"')!] +[A-Z].*$