标签: negate

如何否定方法引用谓词

在Java 8中,您可以使用方法引用来过滤流,例如:

Stream<String> s = ...;
long emptyStrings = s.filter(String::isEmpty).count();
Run Code Online (Sandbox Code Playgroud)

有没有办法创建一个方法引用,它是对现有方法的否定,即:

long nonEmptyStrings = s.filter(not(String::isEmpty)).count();
Run Code Online (Sandbox Code Playgroud)

我可以创建not如下所示的方法,但我想知道JDK是否提供了类似的东西.

static <T> Predicate<T> not(Predicate<T> p) { return o -> !p.test(o); }
Run Code Online (Sandbox Code Playgroud)

java predicate negate java-8

301
推荐指数
8
解决办法
11万
查看次数

如何在bash脚本中使用正则表达式否定测试?

使用GNU bash(版本4.0.35(1)-release(x86_64-suse-linux-gnu),我想用正则表达式否定测试.例如,我想有条件地添加PATH变量的路径,如果路径不在那里,如:

TEMP=/mnt/silo/bin
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/Scripts:
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/local/bin
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
export PATH
Run Code Online (Sandbox Code Playgroud)

我确信有一百万种方法可以做到这一点,但我想知道的是,条件是否可以以某种方式被否定,如(错误的):

TEMP=/mnt/silo/bin
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/Scripts:
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/local/bin
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
export PATH
Run Code Online (Sandbox Code Playgroud)

regex bash conditional negate

153
推荐指数
5
解决办法
12万
查看次数

否定bash脚本中的条件

我是bash的新手,我一直试图否定以下命令:

wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -eq 0 ]]; then
        echo "Sorry you are Offline"
        exit 1
Run Code Online (Sandbox Code Playgroud)

如果我连接到互联网,这个if条件返回true.我希望它以相反的方式发生,但放在!任何地方似乎都不起作用.

linux bash if-statement negate

141
推荐指数
5
解决办法
15万
查看次数

SQL WHERE条件,不等于?

是否有可能否定where子句?

例如

DELETE * FROM table WHERE id != 2;
Run Code Online (Sandbox Code Playgroud)

mysql sql where-clause negate

86
推荐指数
9
解决办法
24万
查看次数

如何否定流程的回报价值?

我正在寻找一个简单但跨平台的否定过程来否定过程返回的价值.它应该将0映射到某个值!= 0和任何值!= 0到0,即以下命令应返回"yes,nonexistingpath不存在":

 ls nonexistingpath | negate && echo "yes, nonexistingpath doesn't exist."
Run Code Online (Sandbox Code Playgroud)

的! - 运算符很棒但很遗憾不是shell独立的.

shell cross-platform negate

83
推荐指数
6
解决办法
3万
查看次数

否定正则表达式中的反向引用

如果字符串具有此预测格式:

value = "hello and good morning"
Run Code Online (Sandbox Code Playgroud)

其中"(引用)也可能是'(单引号),而结束字符('或")与开头字母相同.我想匹配引号之间的字符串.

\bvalue\s*=\s*(["'])([^\1]*)\1
Run Code Online (Sandbox Code Playgroud)

(这两个是允许=符号附近的任何空格)

第一个"捕获的组"(在第一对括号内) - 应该与开头的引号匹配,后者应该是'或'然后 - 我应该允许任何数量的字符不是第一组中捕获的字符,然后我期待在组中捕获的字符(括号引号).

(必须在第二个捕获组中捕获所需的字符串).
但这不起作用.

这样做:

\bvalue\s*=\s*(['"])([^"']*)["']
Run Code Online (Sandbox Code Playgroud)

但我想确保开始和结束引号(双重或单引号)是相同的.


编辑
目标基本上是获取一个锚的开始标记,该锚具有包含在其类属性中的某个类名,我想要涵盖类属性的罕见情况,包括(')或().

根据这里的所有建议,我使用了以下模式:

<\s*\ba\b[^<>]+\bclass\s*=\s*("|'|\\"|\\')(?:(?!\1).)*\s*classname\s*(?:(?!\1).)*\1[^>]*>
Run Code Online (Sandbox Code Playgroud)

含义:
找一个标记 - 开放标志.
允许任何空格.
找到单词 a.
允许任何非关闭标记.
找到"class(任何空格)=(任何空格)"
获取开场引号,以下之一:("或'或\"或\').
来自Alan Moore的回答:允许任何不是开头报价的字符.
find classname
允许任何不是开头引号的字符.
找到与开头相同的收盘价.
允许任何unclosing-tag字符.
找到结束标记char.

regex backreference negate regex-group

41
推荐指数
1
解决办法
1万
查看次数

python如何"否定"值:如果true返回false,如果false返回true

if myval == 0:
   nyval=1
if myval == 1:
   nyval=0
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法在python中进行切换,比如nyvalue = not myval?

python boolean negate

40
推荐指数
1
解决办法
12万
查看次数

C#否定了一个表达式

我正在寻找一种方法来否定用于过滤IQueryable序列的表达式.

所以,我有类似的东西:

Expression<Func<T, bool>> expression = (x => true);
Run Code Online (Sandbox Code Playgroud)

现在我希望创建一个会导致屈服的表达式(x => false)- 所以我基本上想要否定它expression.

我发现自己的工作方法是这样的:

var negatedExpression = 
   Expression.Lambda<Func<T, bool>> (Expression.Not(expression.Body),
                                     expression.Parameters[0])));
Run Code Online (Sandbox Code Playgroud)

但我几乎肯定有更好的方法 - 你能帮助我吗?(Not(expression)可能是这样的).

c# expression negate

21
推荐指数
1
解决办法
4155
查看次数

Python中isinstance()的否定形式

我如何使用Python的负面形式isinstance()?

通常否定会起作用

x != 1

if x not in y

if not a
Run Code Online (Sandbox Code Playgroud)

我只是没有看到isinstance()的一个例子,所以我想知道是否有一个正确的方法来使用isinstance()的否定.

python negation negate isinstance

17
推荐指数
3
解决办法
2万
查看次数

Prolog意味着否定的谓词

如何在PROLOG中编写以下规则:如果P则不是Q.

我明白你可以很容易地写,如果P然后Q谓词喜欢q(X) :- p(X),但你怎么能否定q/1谓词?我不想用其他语义来定义新的谓词non_q/1.

prolog negate implication

12
推荐指数
2
解决办法
3万
查看次数