gpt4 book ai didi

用于匹配文件中的十六进制数字的 Java 正则表达式

转载 作者:行者123 更新时间:2023-11-30 07:37:20 25 4
gpt4 key购买 nike

所以我正在读取一个看起来像这样的文件(如 java 程序

58
68
58
68
40
c
40
48
FA

如果我幸运的话,但更常见的是每行前后都有几个空白字符。

这些是我正在解析的十六进制地址,我基本上需要确保我可以使用扫描仪、缓冲读取器...获取该行,然后确保我可以将十六进制转换为整数。这是我目前所拥有的:

Scanner scanner = new Scanner(System.in);
int address;
String binary;
Pattern pattern = Pattern.compile("^\\s*[0-9A-Fa-f]*\\s*$", Pattern.CASE_INSENSITIVE);
while(scanner.hasNextLine()) {
address = Integer.parseInt(scanner.next(pattern), 16);
binary = Integer.toBinaryString(address);
//Do lots of other stuff here
}
//DO MORE STUFF HERE...

所以我已经将我所有的错误都追溯到解析输入和其他东西,所以我想我只是想弄清楚我需要什么正则表达式或方法来让这个按照我想要的方式工作。

最佳答案

s.next() 处理空白。 (默认分词器不关心它们。)

import java.util.Scanner;
public class Test {
public static void main(String... args) {
Scanner s = new Scanner(System.in);
while (s.hasNext())
System.out.println(Integer.parseInt(s.next(), 16));
}
}

如果您真的想坚持使用模式方法,我建议您使用 XDigit 类:

\p{XDigit} A hexadecimal digit: [0-9a-fA-F]

更进一步; scanner.next(pattern) 将返回整个匹配的模式(包括空格!)您需要使用捕获组。尝试模式

^\\s*(\\p{XDigit}+)\\s*$

然后用 matcher.group(1) 得到实际的十六进制数

关于用于匹配文件中的十六进制数字的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com