如何RegEx禁止词的组合

时间:2017-02-09 14:07:08

标签: regex

我是一名退休教师,并开发了一种使用正则表达式自动标记简答科学问题的方法。我使用或多或少的标准方法,需要关键字(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个禁止的词?

顺便说一下,我对正则表达式了解不多,我只是用它!

1 个答案:

答案 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