gpt4 book ai didi

java - 用于字符串获取不带空格的单词的正则表达式,但其中一部分可以包含空格

转载 作者:行者123 更新时间:2023-12-01 18:44:35 29 4
gpt4 key购买 nike

首先:抱歉这个标题,不知道更好。而且我对正则表达式还很陌生。

我目前正在编写一些可以分析元素/武器名称(来自游戏)的程序。

我想匹配这样的名字:

Windwalkers angry Leather Claws of Destruction

具有以下匹配组:

  1. 踏风者
  2. 生气
  3. 皮爪
  4. 破坏

项目名称具有命名方案:

<> = required, [] = optional
[itemgroup] [adjective] < material name with spaces > [of [source]]

组、形容词和来源不会包含任何空格。

我想出了这个:

(\w*) (\w*) (.+) of (.*)

它根本不处理某些部分是可选的,如果匹配组始终保持不变那就太好了,因此 2 始终是形容词,但可能为空。

感谢您的帮助。

最佳答案

您可以将其分成一行中的各个部分:

String[] parts = str.split("(?<!Leather|Steel|Wood(en)?|Glass|Iron|Bronze) (of )?");

您可以根据需要添加任意数量的形容词。

这使用负向后查找来断言被分割的空间前面没有形容词。可选的 (of )? 消耗术语之间的“of”。

<小时/>

这是一个测试:

String str = "Windwalkers angry Leather Claws of Destruction";
String[] parts = str.split("(?<!Leather|Steel|Wood(en)?|Glass|Iron|Bronze) (of )?");
System.out.println(Arrays.toString(parts));

输出:

[Windwalkers, angry, Leather Claws, Destruction]

关于java - 用于字符串获取不带空格的单词的正则表达式,但其中一部分可以包含空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18346209/

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