一个字符串必须以3或4个字母(不是数字)开头,并且“:”符号应该跟在这些字母后面,并且在冒号之后还应该有三个字符,例如AAA
。例如,AAAA:AAA
或AAA:AAA
。
我开始建立这个,但正则表达式给我带来了太大的痛苦,任何人都可以帮助我吗?
以下是我现在所拥有的:
^[a-zA-Z]{3,4}(:)$
答案 0 :(得分:4)
你的正则表达式几乎就在那里:你需要添加[a-zA-Z]{3}
。
我更喜欢[[:alpha:]]
POSIX class in Ruby匹配字母。
/[[:alpha:]]/
- 字母字符
POSIX括号表达式也类似于字符类。它们提供了上述的便携式替代方案,具有包含非ASCII字符的额外好处。
所以,这是一个可能的正则表达式:
\A[[:alpha:]]{3,4}:[[:alpha:]]{3}\z
请参阅demo
正则表达式匹配:
\A
- 字符串的开头(在RoR中,您必须使用\A
代替^
,否则您将收到错误)[[:alpha:]]{3,4}
- 3或4个字母:
- 文字:
[[:alpha:]]{3}
- 3个字母\z
- 字符串结尾(在RoR中,您必须使用\z
代替$
,否则您将收到错误)要仅允许AAA
或AAAA
,您需要引入一个可选的(?
量词)非捕获组((?:...)
构造):
\A[[:alpha:]]{3,4}(?::[[:alpha:]]{3})?\z
^^^ ^^
请参阅another demo
答案 1 :(得分:3)
尝试使用此方法(如果您的方言中的正则表达式必须作为字符串传递,则为引号)
Sub testLoopPaste()
Dim i As Long
Dim LastRow As Long
Dim wb As Workbook
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Set wb = ThisWorkbook
Set sht1 = wb.Sheets("Master")
Set sht2 = wb.Sheets("Audit Sheet")
Application.ScreenUpdating = False
'Find the last row (in column A) with data.
LastRow = sht1.Range("A:A").Find("*", searchdirection:=xlPrevious).Row
'This is the beginning of the loop
For i = 2 To LastRow
'First activity
sht2.Range("B1" & ii) = sht1.Range("B" & i).Value
sht2.Range("B2" & ii) = sht1.Range("A" & i).Value
sht2.Range("B3" & ii) = sht1.Range("N" & i).Value
sht2.Range("H1" & ii) = sht1.Range("C" & i).Value
sht2.Range("H2" & ii) = sht1.Range("I" & i).Value
sht2.Range("H3" & ii) = sht1.Range("F" & i).Value
sht2.Range("K1" & ii) = sht1.Range("D" & i).Value
sht2.PrintOut
Next i
Application.ScreenUpdating = True
End Sub