正则表达式:从列表

时间:2017-03-14 01:17:45

标签: regex

所以我有这个简单的问题....我需要生成一些随机测试数据。

像这样......(还有许多其他专栏,但我为了简单起见省略了它们......)使用正则表达式使用this website生成我的虚拟数据。

CourseCode  Trimester
-------------------
A100    T1
A200    T1, T2
A300    T1, T2, T3
B400    T2, T3

可能的三个月值是T1,T2,T3。 课程可能属于任何1,2或三个学期。

我需要一个正则表达式,它可以从以下列表中给我以下任何结果.... 一次一个结果

  • T1
  • T2
  • T3
  • T1,T2
  • T1,T3
  • T2,T3
  • T1,T2,T3

到目前为止,我已尝试过这个......

(T1(T2|T3))|(T2(T1|T3))|(T3(T1|T2))

但它只给了我

  • T1,T2
  • T2,T3
  • T3,T1

非常感谢任何帮助。感谢

2 个答案:

答案 0 :(得分:0)

在我看来你需要这样的东西:

(T\d+,)*(T\d+)

基本上,只有T1,之类的内容为零或更多,后跟T2

之类的内容

Debuggex Demo

但是......如果你想专门匹配实际列表中的内容(特别是如果这个列表可以改变的话)......你真的不应该只使用正则表达式来做这件事。在这种情况下,更好的答案取决于您使用的语言。

答案 1 :(得分:0)

难以使用正则表达式设置值约束。我不确定这可以进一步简化

(T(1|2|3))|(T1,(T2|T3|T2,T3))|(T2,T3)