我正在尝试创建一个在以下情况下返回TRUE或FALSE的正则表达式:
# Returns TRUE
'Apples: 1'
'Apples: are a fruit'
'Apples: z'
'Apples: I don't care what comes here if it's not only spaces or nothing'
# Returns FALSE
'Apples:'
'Apples: '
'Apples: '
到目前为止,我所尝试的内容很接近,但我似乎无法涵盖第二部分:
'Apples: ' -match '^Apples:[A-Za-z0-9]*'
唯一的问题是,Apples:
之后需要有一些东西,不能是空格或空白。但是首先或之后会出现一些空格,但是在线上确实需要文本或数值。
感谢您的帮助。
答案 0 :(得分:5)
我认为这应该有效:
'^Apples:\s*\S+\s*'
如果" Apple:"之后有一个或多个非空白字符,那么它将匹配,它可能有也可能没有前导空格或尾随空格。
答案 1 :(得分:3)
如果你只想要匹配/无匹配结果,你可以简单地匹配冒号,后跟任意数量的空格和至少一个非空白字符(:\s*\S
)。
PS C:\> 'Apples:' -match ':\s*\S' False PS C:\> 'Apples: ' -match ':\s*\S' False PS C:\> 'Apples: ' -match ':\s*\S' False PS C:\> 'Apples: are a fruit' -match ':\s*\S' True PS C:\> 'Apples:x' -match ':\s*\S' True
如果你想能够提取行的其余部分,你可能想要使用一个lookbehind断言来锚定匹配后的任意数量的空白字符((?<=:\s*)\S.*
)冒号。
PS C:\> 'Apples:' -match '(?<=:\s*)\S.*' False PS C:\> 'Apples: ' -match '(?<=:\s*)\S.*' False PS C:\> 'Apples: ' -match '(?<=:\s*)\S.*' False PS C:\> 'Apples: are a fruit' -match '(?<=:\s*)\S.*' True PS C:\> $matches[0] are a fruit PS C:\> 'Apples:x' -match '(?<=:\s*)\S.*' True PS C:\> $matches[0] x
答案 2 :(得分:2)
我认为你需要的是:
^Apples: *[A-Za-z0-9]+
其中:
*
表示零个或多个空格[A-Za-z0-9]+
表示 A-Za-z0-9
答案 3 :(得分:0)
您可以使用正则表达式元字符\w
来匹配任何单词字符:
$Apples = 'Apples: 1','Apples: are a fruit','Apples: z','Apples:','Apples: ','Apples: '
$Apples | ForEach {$_ -match '^Apples: \w' }
返回:
True
True
True
False
False
False
<强>解释强>
\ w元字符用于查找单词字符。
单词字符是a-z,A-Z,0-9中的字符,包括_ (下划线)角色。
答案 4 :(得分:0)
这是在Python中,但应该这样做。正则表达式说: 必须从Apples:开始,然后是空格,然后是NON-Space。您也可以使用\ w而不是\ S但是它不会捕获&amp; *%$类型的字符。你的电话:)希望有所帮助!
import re
thelist = ['Apples: 1', 'Apples: are a fruit', 'Apples: z', 'Apples: I dont care what comes here if its not only spaces or nothing', 'Apples:', 'Apples: ', 'Apples: ']
theregex = "^Apples:\s\S"
for word in thelist:
if re.search(theregex, word):
print ("Hurrah, it's true")
else:
print ("Welcome to false town")
答案 5 :(得分:0)
如果你想在匹配中实际捕获苹果的值,这个正则表达式可以工作:
^Apples:\s*(.*\S.*)\s*
它捕获匹配组1中的值。
答案 6 :(得分:-1)
如果您需要稍微更通用的解决方案(不仅仅是 Apples ),请尝试以下方法:
/^[A-Z]+: *\K\w.*/gmi
工作原理:
^[A-Z]+:
- 开始行(注意 m 开关),
一系列字母(大写或小写 - 注意 i 开关)。*
- 可能有一些空格。\K
- 保持 - “忘记”到目前为止匹配的内容,设置起点
这场比赛。\w.*
- 一个字char,可能还有一些字符。实际匹配的文字仅 \ K 之后的内容。