相关疑难解决方法(0)

正则表达式中的单词边界是什么?

我在Java 1.6中使用Java正则表达式(尤其是解析数字输出)并且找不到\b("单词边界")的精确定义.我假设这-12将是一个"整数字"(匹配 \b\-?\d+\b),但似乎这不起作用.我很想知道匹配空格分隔数字的方法.

例:

Pattern pattern = Pattern.compile("\\s*\\b\\-?\\d+\\s*");
String plus = " 12 ";
System.out.println(""+pattern.matcher(plus).matches());
String minus = " -12 ";
System.out.println(""+pattern.matcher(minus).matches());
pattern = Pattern.compile("\\s*\\-?\\d+\\s*");
System.out.println(""+pattern.matcher(minus).matches());
Run Code Online (Sandbox Code Playgroud)

返回:

true
false
true
Run Code Online (Sandbox Code Playgroud)

regex word-boundary

107
推荐指数
8
解决办法
12万
查看次数

正则表达式匹配号码后面没有连字符

我使用正则表达式已经很多年了,在计算正则表达式时从来没有遇到过这么多麻烦。我正在使用 PHP 7.2.2preg_match()返回一组匹配数字进行解析,因此使用正则表达式中的括号。

我试图匹配一个或多个数字,x后跟一个或多个数字,其中整个字符串后面没有连字符。当 $input 是18x18, 18x18-or 时18x18size,匹配的是18and 1。当$inputis 时8x8,没有匹配项。

我在这里似乎在做一些根本错误的事情。

<?php
$input = "18x18";    
preg_match("/(\d+)x(\d+)[^-]/", $input, $matches);
Run Code Online (Sandbox Code Playgroud)

调用print_r($matches)结果:

Array
(
    [0] => 18x18
    [1] => 18
    [2] => 1
)
Run Code Online (Sandbox Code Playgroud)

括号在那里是因为我使用 PHP 的 preg_match 返回匹配数组。我知道什么时候应该转义连字符,我已经尝试了两种方法来确保但得到相同的结果。为什么这不匹配?

php regex

0
推荐指数
1
解决办法
576
查看次数

标签 统计

regex ×2

php ×1

word-boundary ×1