我在Notepad ++中这样做
以下是我的数据的样子
N|12345|JOHN|TAKÁCSI|blah|blah|
N|12466|PÉTER|VÁLI|blah|blah|
Y|45645|SÁNDAR|SÁKU|blah|blah|
N|89789|DÓRA|MERRY|blah|blah|
My regular expression: ^([N|Y]\|.*\|.*[^\x00-\x7F].*\|.*[^\x00-\x7F].*\|)
仅匹配first和lastname中包含UTF字符的行 如果任一名称都有该字符,则不显示。
如何获得?
答案 0 :(得分:1)
^[NY]\|\d{5}\|(?:[\w_]+[^\x00-\x7F]?[\w_]+\|){2}(?:[\w_]+[\x00-\x7F]?[\w_]+\|){2}$
匹配:
N|12345|JOHN|TAKÁCSI|blah|blah|
N|12466|PÉTER|VÁLI|blah|blah|
Y|45645|SÁNDAR|SÁKU|blah|blah|
N|89789|DÓRA|MERRY|blah|blah|
不匹配:
N|89789|DÓRA|MERRY|blah|blÓh|
N|89789|DoRA|MERRY|blaÓh|blah|
N|89789|DoRA|MERRY|blaÓh|blÓah|
您正在检查两者是否有UTF字符,我将其更改为只需要匹配一个,另一个现在不是强制性的。我还使用@ HamZa的答案部分修改了这个答案,以满足您的数据集和需求。
答案 1 :(得分:1)
您可以使用:^[NY]\|\d+(?:\|[^\W_]+){4}\|$
<强>解释强>
^
:匹配行的开头[NY]
:匹配N
或Y
。您应该不使用[N|Y]
,因为这也会使其与管道匹配|
\|
:匹配管道|
\d+
:匹配一位数或更多(?:
:非捕获组
\|
:匹配管道|
[^\W_]+
:我们可以使用匹配字母数字字符的\w
,但也会包含_
。所以为了不匹配_
我们只是反过来。){4}
:小组结束,重复4次。\|
:匹配管道|
$
:匹配行尾