我有两个示例字符串:
"Seat 7: Bug One [ME] (82 power)"
和
"Bug One [ME] : xx xxxxx xxxxxx"
我需要能够在Bug One [ME]
上从两个字符串中分离,这样我就可以用不同的文本替换它。我目前使用的正则表达式是:
":? ?[^\[ME\]]*\[ME\] ?:? ?"
但当我尝试这个时,我得到了以下不正确的字符串:
"" <-- empty string (which is wrong)
和
"(82 power)" <-- which is right
我想要"Seat 7: "
而不是空字符串。
我是Java正则表达式的新手,有人能帮我找出我做错了什么吗?
谢谢!
编辑:每个人都建议我试着在"Bug One[ME]"上进行拆分,但不幸的是,"Bug One"可能会改变。例如,我可以是"Fox Seven[ME]",我需要能够在这个字符串上进行拆分。
为了全局替换<some text> [ME]
,您需要这样的正则表达式:
(?<=: )[^[]+[ME]|^[^[]+[ME](?= :)
说明:
(?<=: )
查找:查找正则表达式前面的": "
[^[]+
查找一个或多个非[
字符[ME]
与[ME]
完全匹配|
RegEx OR^
匹配字符串的开头[^[]+
查找一个或多个非[
字符[ME]
与[ME]
完全匹配(?= :)
前瞻:在正则表达式之后立即查找" :"
RegEx演示
与前面的答案一样,我认为您有点过于复杂了:(
(.*)(Bug One [ME] )(.*)
如果您想要"Seat 7:"one_answers"(82power(",并且您确信":"和[ME]之间只有2个单词:,则需要使用以下内容
String s = "Seat 7: Bug One [ME] (82 power)";
String[] sArr= s.split(" (\w+) (\w+) \[ME\]");