我使用以下正则表达式:
^[^^DD(| ]
有了这些数据:
jfklajf
^DD
hjhkjk
DIOL(.D1)
表达式正确识别第一行(jfkl ...),但无法识别最后一行(DIOL ...)。我需要将这两行标识为与行开头的模式^DD(
不匹配。
我做错了什么?
由于
答案 0 :(得分:4)
根据你的评论你可以使用neg。与锚点结合前瞻:
private List<TwitterFollowers> fetchResults2(Response<FollowersResponseModel> response) {
FollowersResponseModel responseModel = response.body();
return responseModel.getResults();
}
private long fetchResults3(Response<FollowersResponseModel> response) {
FollowersResponseModel responseModel = response.body();
Log.e("lol",String.valueOf(responseModel.getNextCursor()));
return responseModel.getNextCursor();
}
private void loadTwitterFollowers() {
MyTwitterApiClient myTwitterApiClient = new MyTwitterApiClient(twitterSession);
do {
myTwitterApiClient.getCustomTwitterService2().list(loggedUserTwitterId, cursor).enqueue(new retrofit2.Callback<FollowersResponseModel>() {
@Override
public void onResponse(Call<FollowersResponseModel> call, Response<FollowersResponseModel> response) {
Log.e("onResponse",response.toString());
twitterFollowers = fetchResults2(response);
getActivity().setTitle(String.valueOf(twitterFollowers.size())+ " Followers");
cursor = fetchResults3(response);
Log.e("onResponse","twitterfollowers:"+twitterFollowers.size());
adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<FollowersResponseModel> call, Throwable t) {
Log.e("onFailure",t.toString());
}
});
}
while (cursor != 0);
}
<小时/> 细分,这说:
^(?!\^DD|[ ]{4}).+
见a demo on regex101.com。请注意,您需要在^ # match start of the line
(?! # neg. lookahead
\^DD # neither ^DD
| # nor
[ ]{4} # four spaces
)
.+ # omit empty lines
中双重转义反斜杠。
答案 1 :(得分:1)
答案 2 :(得分:0)
答案 3 :(得分:0)
你的正则表达式是:作为句子不是以^,D,(,|或空格。
开头[] construct是一个字符类,意味着它将匹配类中的任何一个字符,以^开始该类否定它并且意味着任何一个字符不在类。
正如其他答案所述,你应该寻找一个消极的前瞻,或者如果你喜欢复杂性,我理解你的尝试:
^([^^][^D]{2}[^(]|[^ ]{4})
答案 4 :(得分:0)
^((?![^DD|\s{4}]).)
解释
^...Start of the line
((?!Expression).)...not matching
[^DD|\s{4}]...Pattern 1 (^DD) or Pattern 2 (\s{4})
\s{4}...whitespaces 4 times