我想解析以"My Password: "
开头的一行。问题是2个单词之间有空格,冒号后面有一个空格(My<space>Password:<space>Text<end of line>)
。
我无法将两个单词和冒号一起解析到行尾。正则表达式是用Java编写的。任何帮助将受到高度赞赏。
修改
我正在尝试将正则表达式作为字符串myRgex = "My Password:+(/S)*$"
...
这是为了确保我的密码中没有任何空格,而*$
是为了确保我这样做直到行尾。感谢您的快速回复。我仍然在努力。任何人都可以帮我解析它直到行尾忽略任何空格并盯着上面提到的单词。如果你发现它是错的,请纠正我的正则表达式。
答案 0 :(得分:2)
Pattern regex = Pattern.compile("^My Password: (\\S*)$");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group(1);
}
应该这样做。
^ # Anchor the search at the start of the string
My Password: # Literal "My Password: "
(\\S*) # Any number of non-space characters
$ # Anchor the search at the end of string
您的正则表达式有一些错误:非空格字符缩写为\S
,而不是/S
。在你的正则表达式中,*
适用于冒号:My Password:*
表示“我的密码”,后跟零个或多个冒号。
答案 1 :(得分:0)
我不确定我是否理解,你想检查以“我的密码:”开头的行,并且在“我的”和“密码”之间有一个空格而在冒号之后有另一个空格吗?
若然,请尝试:/^My Password: .*/
因为空格字符和冒号字符不是像点或星号(*)这样的保留字符,所以你可以 使用它们。
如果您正在寻找不区分大小写(即我的pasSworD),请将其与最后的案例标记一起使用:/^my password: .*/i
。
.
是任何单个字符
*
表示零次或多次
编辑:
如果你需要获得匹配并且不仅对正则表达式的布尔评估感兴趣,你可以在.*
之间放置括号:/^My Password: (.*)/
。