我的文字里面有一些网址。可以有3种类型的网址
我需要从所有网址获取地址部分(例如:website-link.ch)。对于它我需要一个正则表达式,如果某些东西以'www'开头,那么它将具有正面的外观。 或与'http:// www。' 或与'https:// www。'
是否可以将OR条件置于正向后方?对我来说它没有用,我只创造了这个怪物。
string pattern = @"((?<=http://www\.).*\b)|((?<=https://www\.).*\b)|((?<=www\.).*\b)";
是否可以使模式更智能?
答案 0 :(得分:1)
在这种情况下,您可以通过简单地使用协议和“www”来避免使用lookbehind。部分属于非捕获组。
var regex = new Regex(@"(?:(?:https?://)?www\.)(.*\b)");
由于所有其他组都使用非捕获(.*\b)
语法,因此只会捕获(?:)
匹配的文本。
然后可以通过查看捕获的匹配组来访问网站地址的主机名(不带“www。”):
var hostnameMatch = regex.Match("http://www.website-link.ch").Groups[1];
if (hostnameMatch.Success)
Console.WriteLine("Matched: {0}", hostnameMatch.Value); // Outputs "Matched: website-link.ch"
MSDN在每个匹配组的可用属性上有一些more information。
答案 1 :(得分:1)
您还可以使用具有内置功能的class App extends React.Component {
constructor() {
super();
this.state = { author: '' };
this.change = this.change.bind(this); // set this for change method
}
change(e) {
this.setState({ author: e.target.value });
}
render() {
return <input onChange={ this.change } value={ this.state.author } />
}
}
类来解析字符串并分离部分。
例如:
System.UriBuilder