我是一名退休教师,并开发了一种使用正则表达式自动标记简答科学问题的方法。我使用或多或少的标准方法,需要关键字(A,B,C等)并拒绝禁用词(X):
/^(?!.*?(X))(?=.*?\b(A))(?=.*?\b(B))(?=.*?\b(C)).{0,150}$/i
我希望能够在2个禁止词(X和Y)存在的基础上拒绝但是接受其中一个或哪一个。
所以A B C; A B C X; A B C Y都将被接受,但A B C X Y将被拒绝。是否可以这样做,可能还有更多2个禁止的词?
顺便说一下,我对正则表达式了解不多,我只是用它!
答案 0 :(得分:1)
对于正则表达式的第一部分,您可以使用:
public void loadVideoList() {
Subscriber<List<LocalVideo>> subscriber = new Subscriber<List<LocalVideo>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
if (isViewAttached()) {
Timber.e("Error retrieving local videos", e);
getView().showError();
}
}
@Override
public void onNext(List<LocalVideo> videoList) {
if (isViewAttached()) {
getView().showVideoList(videoList);
if(videoList.isEmpty()) {
getView().showNoVideos();
}
}
}
};
mStoredVideoRepository
.getLocalVideos()
.subscribeOn(mScheduleProvider.computation())
.observeOn(mScheduleProvider.ui())
.subscribe(subscriber);
addToSubscriptions(subscriber);
}
这意味着(?!(?=.*X)(?=.*Y))
和X
不能同时出现。
整个正则表达式:
Y