我正在尝试匹配.NET正则表达式中命名捕获组内的非捕获组,但由于某种原因,仍然捕获了非捕获组:
我尝试使用非捕获组:
(?<Token>\w(?:/)\w)
我有一种感觉,我需要在这里使用前瞻和/或外观,但我仍然无法让它工作。有什么想法吗?
答案 0 :(得分:1)
(?:/)
部分仍然包含在捕获组中,它只是不构成自己的捕获组。你可以这样做:
(\w)(?:/)(\w)
这将捕获单独的捕获组中的A
和B
,但这并不能完全符合您的要求。
您可以执行的操作是捕获整个组(?<Token>\w/\w)
,然后无需更换/
字符串。
答案 1 :(得分:0)
试试这个:
1.9.3-p545 :022 > line = "A/B"
=> "A/B"
1.9.3-p545 :023 > test = line.scan(/([A-z: ]+)/).flatten.join()
=> "AB"
1.9.3-p545 :024 >