Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 字符串和位置之间的正则表达式_Regex_Vb.net_String - Fatal编程技术网

Regex 字符串和位置之间的正则表达式

Regex 字符串和位置之间的正则表达式,regex,vb.net,string,Regex,Vb.net,String,我有一个令人困惑的字符串,它通常包含某种形式的地址,在某些情况下,它是一个角地址,因为地址在开始时有一个CNR,所以我可以使用以下正则表达式(我在vb.net中工作): 案例1 Instr CNR:Regex=新的Regex(((CNR)(*?)(=\SVSE | M | SVC | SVSW | SVNE | SVNW)”,RegexOptions.rightoleft) 字符串的末尾通常是一个映射引用,这是末尾要查找的,然后允许我提取地址。一旦我有了这个地址,我计划对地址进行地理编码以确定纬

我有一个令人困惑的字符串,它通常包含某种形式的地址,在某些情况下,它是一个角地址,因为地址在开始时有一个CNR,所以我可以使用以下正则表达式(我在vb.net中工作):

案例1 Instr CNR:Regex=新的Regex(((CNR)(*?)(=\SVSE | M | SVC | SVSW | SVNE | SVNW)”,RegexOptions.rightoleft)

字符串的末尾通常是一个映射引用,这是末尾要查找的,然后允许我提取地址。一旦我有了这个地址,我计划对地址进行地理编码以确定纬度和经度

但是,在某些情况下,没有地址,字符串可能包含一些短语,这些短语向我暗示地址在该点之后,例如FIRE NOW OUT JOHN ST Suburban M 215 G2。如果是这种情况,我使用以下正则表达式:

案例2无CNR:正则表达式=新正则表达式(([\d]+)|([\d]+-[\d]+)|([\d]+-[\d]+)(12)中国大陆学(124c1)中国大陆学(124c1)中国大陆学(124c1)中国学(124c1)中国学(124c1)中国学(124c1)中国学(124c3)中国学(124c3)中国学(124c3)汽车制造业(3)汽车制造业)中国学(CNc3)中国学(124c3)中国学(124c3)中国学(124c3)中国学(124c3)中国学)中国学(124c3)中国学)中国学(124c1)中国学)中国学(124c1)中国学(124c1)中国学c1)中国学(124c1)中国学学(124c1)中国学c1)中国学c1)中国学学(124c1)中国学学学学学c1,中国语语语语,中国学c1)中国学(124c1)中国学学学学学学学学(124c1)中国学c1,中国语语语语,;烟雾国际空间站从风机中呼出|汽车火灾|火灾报警运行|气体泄漏|气体管道|现在熄灭|事故|吸烟|屋顶|气体|需要|火灾|锁车|冒烟|单车事故|火灾| | | | | | | | | |事故| | | | |火灾| | | | | | |

在所有情况下,我都是从右到左工作,查看字符串的前部何时被找到,然后我希望从开始一直到映射引用之前。然而,我的问题是,当我可能想包括其他短语时,如何使用上述(案例2)正则表达式查找一个短语,但不包括它。例如,如果字符串有一个街道编号,那么我希望在提取的字符串中包含该编号,但是如果它需要,那么我不希望提取该编号。我将举两个例子

A:特殊电器类型-A要求示例ST郊区M 215 G5 B:房屋火灾123例郊区M 215 G5

在案例A中,REQUIRED不是地址的一部分,因此我不希望正则表达式在提取的地址中包含它,它将作为字符串输出

在案例B中,由于存在一个街道地址,我不想排除它,因此提取的地址将是123

因此,问题是在上面的正则表达式中,如何提取短语之间的字符串,在某些情况下包括短语,在其他情况下排除短语

很抱歉问了这么大的问题,我想确保我提供了足够的信息。 最后一个问题是,正则表达式是否允许您计算出第一部分匹配的位置(例如字符串中的长度),因此,例如,在上述必需部分中,在必需出现后是35个字符,正则表达式提取字符串示例ST。我可以让正则表达式返回第一个匹配的位置,这样我就可以从字符串中提取附加信息(例如,从字符串的开头,直到正则表达式位置A提取:需要特殊设备类型A)


谢谢你的帮助

我得到了问题的一个部分,使用match.index和match.length可以计算出字符串的实际结束位置(例如位置),从那里我可以完成我想做的部分

我唯一无法解决的问题是如何使用下面这样的正则表达式示例,并在返回的字符串(例如正则表达式匹配)中包含CNR(如果找到),但不包括STREET1或ROAD1:

Regex=New Regex(((CNR | |)(.*)(=\SVSE | M | SVC | SVSW | SVNE | SVNW)”,RegexOptions.right-toleft)

例如,如果我的字符串是:示例文本CNR 123 STREET A郊区M 215 G2,它将返回CNR 123 STREET A郊区,但如果我的字符串是示例文本STREET 1 STREET A郊区M 215 G2,它将返回STREET A郊区\

不过我应该指出,上面例子中的STREET1是正则表达式开始/结束的点,但不包括在比赛中,因为STREET A可能是一个不同的短语,我不能只查找STREET A

谢谢