我希望匹配除特定号码以外的所有号码组合。
例如,“日期:12月27日,我吃了15块鸡肉和60块汉堡包。我总共花了11美元。”
我想要15,60而不是12 27和11,我该怎么办?
很抱歉描述不清楚。事实上,我需要的是代表某些项目数量的数字,而不是DATE,而不是ID号,而不是句子中的金钱。我很难使用正则表达式(例如(?!\\ d +))进行提取。我只是想知道是否需要使用自然语言处理来提取。任何人都可以发表任何指示或不同的想法谢谢
答案 0 :(得分:1)
答案 1 :(得分:0)
你真的需要详细说明。怎么样123,它会匹配123,3或什么都没有?这些数字的范围怎么样?这些数字有多大,多小都有限制吗?您要排除哪些号码?他们有共同点吗?
使用正则表达式时,您通常必须非常小心,并且必须了解大多数(如果不是全部)边缘情况。
在您的具体示例中,您最好只是命名要包含的数字而不是那些要排除的数字,这很简单
@Directive({
selector: 'a, abbr, address, article, body, br, button, div, h1, h2, h3, h4, h5, h6, header, hr, i, iframe, img, ' +
'input, label, li, link, meta, nav, object, ol, option, output, p, param, pre, section, select, small, source, span,' +
'summary, table, tbody, td, textarea, tfoot, th, thead, time, title, tr, u, ul, video'
})
export class HighlightDirective {
elementsArray: string[];
listening: boolean = false;
constructor(private el: ElementRef, private cdr: ChangeDetectorRef) {
this.cdr = cdr;
this.elementsArray = ["a", 'abbr', 'address', 'article', 'body', 'br', 'button', 'div', 'h1', 'h2', 'h3', 'h4', 'h5'
, 'h6', 'header', 'hr', 'i', 'iframe', 'img', 'input', 'label', 'li', 'link', 'meta', 'nav', 'object', 'ol', 'option'
, 'output', 'p', 'param', 'pre', 'section', 'select', 'small', 'source', 'span', 'summary', 'table', 'tbody', 'td'
, 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'u', 'ul', 'video'];
}
//@Input() defaultColor: string;
//@Input() listening: boolean = false;
//check: boolean = false;
public getElement(): ElementRef {
return this.el;
}
public startFeedback(): boolean {
this.listening = true;
this.cdr.detectChanges();
return true;
}
@HostListener('click') onClick() {
if(this.listening) {
document.getElementById('modalButton').click();
this.listening = false;
}
}
@HostListener('mouseenter') onMouseEnter() {
if(this.listening) {
this.el.nativeElement.style.boxShadow = '0 0 0 5px yellow';
this.el.nativeElement.parentNode.style.boxShadow = null;
}
}
@HostListener('mouseleave') onMouseLeave() {
if(this.listening) {
this.el.nativeElement.style.boxShadow = null;
this.el.nativeElement.parentNode.style.boxShadow = '0 0 0 5px yellow';
let check = false;
for (let entry of this.elementsArray) {
if (this.el.nativeElement.parentNode.nodeName == entry.toUpperCase()) {
check = true;
break;
}
}
if (!check)
this.el.nativeElement.parentNode.style.boxShadow = null;
}
}
}
会做的。
答案 2 :(得分:0)