Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 |

2015-12-29(Tue)

EXCEL VBAメモ - Like演算子パターン

"文字列" Like "パターン"

?      任意の一文字
*      任意の文字
#      任意の数値
[a-z]  a-z内の一文字
[!a-z] a-zに一致しない一文字

EXCEL VBAメモ - 正規表現


Sub foo()
    Dim re As Object
    Dim str As String
    Set re = CreateObject("VBScript.RegExp")
    str = "apple"
    With re
        .Pattern = "ap"             '検索パターンを設定
        .IgnoreCase = True          '大文字と小文字を区別しない
        .Global = True              '文字列全体を検索
        If .test(str) Then
            MsgBox "マッチしました。"
        Else
            MsgBox "マッチしません。"
        End If
        str = .Replace(str, "Ap")   'マッチした文字の置換
        MsgBox str                  '-> Apple
    End With
    
    Dim ms As Object
    Dim m As Object
    With re
        .Pattern = ".."
        .IgnoreCase = True
        .Global = True
        Set ms = .Execute(str)      'Matchesコレクション
        MsgBox ms.Count              '-> 2
        For Each m In ms            'Matchオブジェクト
            MsgBox "idx = " & m.FirstIndex & vbCrLf _
                 & "size = " & m.Length & vbCrLf _
                 & "val = " & m.Value
                                    '-> idx = 0, size = 2, val = Ap
                                    '-> idx = 2, size = 2, val = pl
        Next
    End With

    
    With re
        .Pattern = "A(..)(..)"
        .IgnoreCase = True
        .Global = True
        Set ms = .Execute(str)      'Matchesコレクション
        MsgBox ms.Count             '-> 1
        Set m = ms(0)               'Matchオブジェクト
        MsgBox "idx = " & m.FirstIndex & vbCrLf _
                 & "size = " & m.Length & vbCrLf _
                 & "val = " & m.Value
                                    '-> idx = 0, size = 5, val = Apple
        MsgBox m.SubMatches.Count   '-> 2
        For i = 0 To m.SubMatches.Count - 1
            MsgBox "SubMatch(" & i & ") = " & m.SubMatches(i)
        Next
                                    '-> SubMatch(0) = pp
                                    '-> SubMatch(1) = le
    End With

    Set re = Nothing
    Set ms = Nothing
    Set m = Nothing
End Sub

2015-12-12(Sat)

Windows10 - Windows Updateが完了しない

毎月第二火曜日の翌日(日本時間)のWindows Updateですが、Windows 10PC確認すると、まだ完了していない!?

「悪意のあるソフトウェアの削除ツール (KB890830)」がインストール待ちで停止状態になっている。この番号で検索してみるとWindows 10に限らず悪さをしているみたい。

ということで、このファイル単独ダウンロード・実行することで解決しました。


手順

  1. 念のためPC再起動
  2. Malicious Software Removal ToolからKB890830をダウンロードして、実行する。
  3. PC再起動
  4. 「スタートボタン」→「設定」→「更新セキュリティ」→「windows Update」で指示に従い、再試行する。

2015-12-05(Sat)

Go言語 - 式の構文解析 - 演算子順位法

再起下降法と比較してのメリットは、演算子の優先度に応じてparse関数作成する必要がなく、演算子の優先順位・結合方向をデータとして与えるだけで良いということ。

ident1 op1 ident2 op2 ident3 op3 ……

上記のような並びの式の場合、演算子op1とop2の優先順位と結合方向を比較して、ident2がident1とペアのノードとなるか、ident3以降とペアのノードとなるかを判断する。


構文

  expr    = primary { op primary }      # { }は0回以上の繰り返し
  primary = ident | '(' expr ')'
  op      = '=' | '+' | '-' | '*' | '/' | '^'
  ident   = 'A' … 'Z' 'a' … 'z'

primaryの中のカッコの処理は、通常の再起下降法で処理。並びの演算子の比較とノードの作成は、makeNode()関数実施している。


続きを読む