英文:
java regex replace all to get hostname
问题
我有以下的 URL:
https://mydemo.company/pages/pag1
我想从 URL 字符串中获取 mydemo,
我们能否有一个可以在 replaceAll 中使用的正则表达式,以排除其他所有内容并获得 mydemo:
replaceAll('regextoNegate', '')
(请注意,我只提供了翻译后的部分,符合您的要求。如果您需要更多帮助,请随时提问。)
英文:
I have the following url :
https://mydemo.company/pages/pag1
I want get mydemo from url string,
Can we have the regex that can be used in replaceAll to negate everything else and get mydemo
replaceAll('regextoNegate','')
答案1
得分: 1
.*?\/\/(.*)\..*
**对上述正则表达式的解释:**
- **```.*?\/\/```** - 在`//`之前懒惰地匹配所有内容。
- **```(.*)```** - 表示第一个捕获组,匹配`//`之后和最后一个`.`之前的所有内容,因为它是贪婪匹配。
- **```\.```** - 字面匹配`.`。
- **```.*```** - 匹配`.`之后的所有内容,零次或多次。
- **```$1```** - 表示第一个捕获组。
----------
[![图片表示][1]][1]
你可以在[**这里**](https://regex101.com/r/NNrrTE/1)找到上述正则表达式的示例实现。
**在Java中的示例实现:**
```java
public class Main
{
public static void main(String[] args) {
String str = "https://mydemo.company/pages/pag1\nhttps://mydemo.secondString.company/pages/pag1";
System.out.println(str.replaceAll(".*?\\/\\/(.*)\\..*", "$1"));
}
}
你可以在这里找到上述实现的示例运行。
<details>
<summary>英文:</summary>
You may try:
.*?\/\/(.*)\..*
**Explanation of the above regex:**
- **```.*?\/\/```** - Matches everything lazily before `//`.
- **```(.*)```** - Represents first capturing group matching everything after the `//` and before the last `.` since it is a greedy match.
- **```\.```** - Matches `.` literally.
- **```.*```** - Matches everything after `.` zero or more time.
- **```$1```** - Represents the first captured group.
----------
[![Pictorial Representation][1]][1]
You can find the sample implementation of the above regex in [**here.**](https://regex101.com/r/NNrrTE/1)
**Sample implementation in java:**
public class Main
{
public static void main(String[] args) {
String str = "https://mydemo.company/pages/pag1\nhttps://mydemo.secondString.company/pages/pag1";
System.out.println(str.replaceAll(".?\/\/(.)\..*", "$1"));
}
}
You can find the sample run of the above implementation in [**here.**](https://onlinegdb.com/H1NQMHDC8)
[1]: https://i.stack.imgur.com/gzZey.png
</details>
# 答案2
**得分**: 1
你可以使用这个基于简单替换的正则表达式:
```java
str = str.replaceAll("^https?://|\\..+$", "");
这里有两个替换部分:
^https?://
:匹配以http://
或https://
开头|
:或者\\..+$
:匹配从第一个点开始到结尾的子字符串
替换成一个空字符串。
英文:
You can use this simple alternation based regex:
str = str.replaceAll("^https?://|\\..+$", "");
There are 2 alternations:
^https?://
: Match startinghttp://
orhttps://
|
: OR\\..+$
: Match substring starting from first dot to end
Replacement is just an empty string.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论