如何解决使用 REGEX 进行案例分析
我有一些数据,比如
small_animal/Mouse
BigAnimal:Elephant
Not an animal.
我想得到的是:
Mouse
Elephant
Not an animal.
因此,我需要一个正则表达式来搜索 /
或 :
,如下所示:如果找到其中之一,则获取该字符后面的文本。如果 /
和 :
都不存在,则取整个字符串。
我尝试了很多。例如,这适用于鼠标和大象,但不适用于第三行:
(?<=:)[^:]*|(?<=/)[^/]*
这将始终提供完整的字符串...
(?<=:)[^:]*|(?<=/)[^/]*|^.*$
我的头在燃烧^^ 也许,有人可以帮忙吗? :) 非常感谢!
编辑:
@The fourth bird 为单个字符提供了一个很好的解决方案。但是如果我想搜索像
这样的字符串怎么办animal::Dog
Another123Cat
Not an animal.
我如何在 ::
或 123
上拆分?
解决方法
你可能会使用
^
-
(?:[^:/]*[:/])?
字符串开头 -
:
可选择匹配除/
或:
之外的任何字符,直到匹配/
或\K
-
.+
忘记目前匹配的内容 -
[^:/\r\n]*
匹配任意字符 1 次以上
如果不想换行,可以用 ^[^:/]*[:/]\K.+|.+
另一种选择可能是使用交替
^[^:/]*[:/](*SKIP)(*F)|.+
或者通过匹配您想要省略的内容来使用 SKIP FAIL 方法
^(?:(?:(?!123|::|[:/]).)*+(?:123|::|[:/]))?\K.+
如果你想使用多个字符,你也可以使用
Vue.component('child-component',{
data: function() {
return {
id: this.childId,value: 'Hello World'
};
},props: ['childId'],methods: {
saveData(){
data = {
id: this.id,value: this.value
};
callback = () => {alert('CHILD COMPONENT SAYS: Initial Value of Child ' + this.id + ' Is: ' + this.value); this.clearData(); alert('CHILD COMPONENT SAYS: Final Value of Child ' + this.id + ' Is: ' + this.value); };
this.$emit('saveEvent',{data,callback})
},clearData(){
this.value = '';
}
},template: `<div>I Am Child {{ childId }} <button @click="saveData">Click Me To Save My Data</button></div>`
});
const vm = new Vue({
el: '#app',data: {},methods: {
saveData({data,callback}){
debugger;
alert('PARENT COMPONENT SAYS: Saving data...');
callback();
}
},template: `
<div>
<p>I am the parent component</p>
<child-component v-for="n in 5" :childId="n" :key="n" @saveEvent="saveData($event)" />
</div>`
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。